如何在 Excel 中使用 REPT 函数创建基于文本的进度条
Excel 的条件格式数据条看似易于使用,但它们带来的问题可能比解决的问题更多,会造成“规则混乱”的烂摊子,并在大型工作表中导致严重的延迟。改用 REPT 函数可以保持文件体积小巧,性能响应迅速。
条件格式是个陷阱
乍一看,Excel 内置的数据条(主页 > 条件格式)似乎是不二之选。只需点击两次即可应用,看起来也很专业。
然而,当你的工作簿从几十行增长到几千行时,问题就开始显现了。
数据条最大的问题不在于格式本身,而在于 Excel 如何管理它。复制和粘贴带有条件格式的范围有时会创建重复的规则或错位的范围,需要手动清理。
还有延迟因素。数据条在其源数据更改时会重新计算,这在频繁更新的超大数据集中可能会影响性能。
Excel 将 REPT 函数的输出视为简单的文本,这使得它比图形渲染要轻量级和稳定得多。
相关文章:停止在 Excel 中与文本搏斗:这 8 个工具是游戏规则改变者
使用 Excel 内置的传统和现代工具修复“虚假”数字、去除隐藏的网页空格并专业地连接文本。
作者:Tony Phillips
REPT 函数是前进的方向
Excel 的 REPT 函数是 Excel 最简单的工具之一,通常用于基本的文本操作。其语法很简单:- =REPT(text,number_of_times)
复制代码 只需选择一个字符,并使用数字、单元格引用或公式告诉 Excel 重复多少次。不知不觉中,你就创建了一个直接作为文本存在于单元格内的条形图。
始终使用格式化的 Excel 表格(Ctrl+T),以确保在添加数据时公式能向下填充到新行。 Excel 中的默认表格样式使用交替行,这可能会削弱视觉效果,因此在创建表格后,打开“表格设计”选项卡并选择一种简洁的样式。
免责声明:视觉效果 vs. 性能
在你完全放弃条件格式之前,值得注意的是,Excel 内置的数据条提供了一些 REPT 函数无法单独复制的优质功能,比如渐变填充以及为负数向左增长的能力。然而,正如我上面解释的,选择 REPT 函数意味着你优先考虑稳定性和性能,而不是视觉上的精细度。
示例 1:基本条形图
假设你是一名经理,正在跟踪团队绩效分数,评分范围为 1 到 10。
首先,选择数据条将放置的列,并将字体更改为 Playbill 或 Britannic Bold(这些字体将单个字符挤压成没有空格的实心条)。然后,在该列的顶部单元格中插入此公式并按 Enter:
在标准的美式键盘上,管道字符 (|) 与反斜杠 (\) 配对,需要按住 Shift 键。在其他键盘上,它位于 Z 键或 Enter 键旁边。
上面的公式将分数乘以 5 的原因是,标准单元格的宽度远大于 10 个单独的管道字符。如果没有乘数,完美的 10 分看起来就像一条微小、不起眼的细条。
要更改条形图的颜色,只需选择该列并使用“主页”选项卡中的“字体颜色”选择器。
示例 2:相对缩放
现在,假设你正在分析从数百到数千的区域销售数据。
为了模仿 Excel 内置数据条相对于范围内其他值增长和缩小的方式,你需要使用 MAX 函数来标准化数据。这可以防止单个单元格中的 5,000 值被渲染为 5,000 个单独的字符。
将可视化列中的字体更改为 Consolas。然后,输入此公式并按 Enter:- =REPT(UNICHAR(9608),([@[Units Sold]]/MAX([Units Sold]))*20)
复制代码
以下是公式的工作原理:
- UNICHAR(9608):这创建了实心块字符 (█),它是一个占据字符空间整个宽度和高度的实心矩形。当使用等宽字体 Consolas 输入时,它是创建看起来像自定义 UI 元素的条形图的完美构建块。使用 UNICHAR 代码确保公式在所有版本的 Excel 中都能工作。
- ([@[Units Sold]]/MAX([Units Sold]):这创建了一个百分比。如果你的顶级销售员售出了 5,000 件,而当前行是 2,500,则结果为 0.5。
- *20:然后将百分比乘以 20,告诉 Excel 100% 的条形图应正好是 20 个字符长。因为该列中的每个单元格都除以相同的最大值,所以条形图彼此之间保持完美的比例。
如果你的销售数据发生变化,MAX 函数会自动更新,你的条形图将相对于新的顶级表现者缩小或增长。
相关文章:如何在 Excel 中设置最小值和最大值
Excel 可以生成限制在最大数字的结果,或返回具有最小值的结果。
作者:Tony Phillips
示例 3:进度跟踪器
在这第三个示例中,假设你正在跟踪一个软件发布,并想要一个“加载条”,显示已完成的工作和仍需完成的工作。虽然简单的条形图显示进度,但双字符条形图提供了更多的上下文,看起来也更专业。
将可视化列的字体设置为 Consolas,键入此公式,然后按 Enter:- =REPT(UNICHAR(9608),ROUND([@Progress]*10,0)) & REPT(UNICHAR(9617),10-ROUND([@Progress]*10,0))
复制代码
在键入时按 Alt+Enter 将长公式拆分为多行。这使得公式更容易构建、阅读和编辑。
以下是正在发生的事情:
- =REPT(UNICHAR(9608),...):通过使用实心块字符 (█) 构建“已填充”部分。它将百分比乘以 10,因此 100% 等于 10 个块。
- &:这是将进度条连接到背景轨道的“粘合剂”。
- REPT(UNICHAR(9617),10-...):使用浅色阴影字符 (░) 构建“剩余”部分。它通过从 10 中减去“已填充”块来计算还剩下多少个位置。
- ROUND(...,0):四舍五入到 0 确保 Excel 总是要求整数个字符。这保证了条形图的总长度(实心 + 阴影)始终正好是 10 个字符,保持条形图右边缘完美对齐。
相关文章:如何在 Microsoft Excel 中连接文本
通过在电子表格中键入或使用单元格引用来连接两个或多个值。
示例 4:星级评分系统
假设你正在为电子商务产品评论构建一个汇总表。
对于像客户评分这样的定性数据,符号比标准条形图效果更好。将“评分”列中的字体更改为 Segoe UI Symbol,它可以处理更复杂的 Unicode 字符而不会将它们变成空框,然后键入此公式并按 Enter:- =REPT(UNICHAR(9733),[@Rating])
复制代码
这个公式以最简单的形式使用 REPT:它指定一个 Unicode 字符,并使用“评分”列中的值告诉 Excel 重复多少次。
你也可以将星形 Unicode 字符替换为其他更符合你数据的代码。例如,UNICHAR(9679) 创建一个现代点图 (•),而 UNICHAR(9670) 创建一个菱形 (♦)。
相关文章:如何向 Excel 添加表情符号(并让它们根据你的数据变化)
不,Excel 不只是为无聊的人准备的。
作者:Tony Phillips
标准的基于文本的条形图计算速度更快,维护更容易,但它们只是增强电子表格外观的一种方式。你也可以使用 Excel 创建热图来突出显示数据集中的趋势和异常值,为你提供一套完整的工具包,用于专业、高性能的报告。
原文链接:How to use the REPT function in Excel to create text-based progress bars |