尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Excel彩色进度条制作:条件格式、REPT与图标集实战

Excel彩色进度条制作:条件格式、REPT与图标集实战 很多人第一次做彩色进度条都是直接在「数据条」上想办法——右键、编辑规则、翻遍对话框最后发现颜色选项只有一个。这不是操作姿势的问题是 Excel 条件格式里数据条本身的设计边界一条数据条规则从头到尾只能是一种填充色。真正能做到进度条根据条件显示不同颜色的是把条件格式的公式规则、REPT 字符条、辅助列分段和图标集这几套东西组合起来用。下面这套东西覆盖 KPI 完成率分档、项目进度预警、库存水位监控这几个最常见的场景从零基础到能直接抄配置都能用上。1. 数据条改不了颜色这件事先别急着怀疑自己的操作我见过太多人在这一步卡住包括我自己早期。客户发来一张表要求完成率 80% 以上绿色的条60% 到 80% 黄色的条60% 以下红色的条第一反应就是选中区域加数据条然后找颜色选项。找了一圈发现只能选一种色于是开始怀疑是不是版本太低、是不是要装插件、是不是得写 VBA。都不是。问题出在对数据条的预期上。1.1 一个规则一种颜色这是数据条的硬边界条件格式的每一条规则本质上是一组判断条件 格式描述。数据条规则的格式描述里只有一个填充色字段。也就是说只要这条规则被触发区域里所有命中的单元格条形颜色都是同一个。Excel 没有提供在这条规则内部再按数值分档换色的入口这不是隐藏功能是压根没做。那为什么很多人会觉得我好像见过彩色的数据条大概率是看到了两种东西一种是渐变填充视觉上颜色深浅有变化容易被误认为是分档另一种是图标集红黄绿三个箭头或灯那确实是分档变色的但它不是条是图标。把这一点想明白后面的方案选型就顺了——你要么接受整格变色要么把一条进度条拆成多段来拼。1.2 渐变填充的渐变到底渐变的是什么这里有个特别容易混淆的点值得单独拎出来说。在「条件格式 → 数据条」下面有两个选项渐变填充和实心填充。名字听起来像是渐变彩色过渡实心单色实际上不是这个意思。渐变填充条形边缘有柔和的过渡和轻微立体感颜色整体还是同一个色系只是靠边缘处稍微淡一点。长度越长视觉上越厚实。实心填充纯色平面没有过渡看起来更扁平、更干净。两个选项都不改变一条规则一种颜色这个事实。渐变填充里那个渐变指的是渲染效果不是颜色分档。我当初就是被这个词带偏的折腾了半小时才反应过来。1.3 需求拆解你要的是整格变色还是条本身分段变色在动手之前先把需求落到两个完全不同的方向上这决定了你该选哪套方案。需求描述本质推荐方案完成率高的行整行/整格变成绿色底单元格底色按值变公式条件格式 填充色单元格里是一条黑色字符条整条随档位换色字体颜色按值变REPT 公式条件格式改字体色一条进度条前半段绿、中间黄、尾部红条本身分段辅助列叠加多条数据条只显示一个红/黄/绿的状态标识图标按值变图标集我个人的经验是如果只是给领导看哪些项目进度落后了图标集比彩色进度条好用十倍一眼扫过去就知道不用去比条的长度。彩色分段进度条更适合放在演示汇报里视觉冲击强但制作成本高、维护麻烦。先想清楚给谁看再决定做多复杂。2. 把原生数据条调到能用三个必须手改的参数就算你最终要上分段方案原生数据条也是基础因为分段方案里的每一段用的还是数据条。所以先把单条数据条的几个坑填掉后面能省很多返工。2.1 最小值和最大值为什么不能留在自动默认状态下数据条的最短条和最长条类型都是自动。它的逻辑是在选定区域内找出实际的最小值和最大值把最小值映射成空条最大值映射成满条。听起来很合理实际上会出大问题。举个具体的例子某部门五个人的完成率分别是 62%、68%、71%、75%、79%。如果按自动渲染62% 的那个人条形长度是 0空条79% 的那个人是满格。视觉上看起来差了整整一条实际只差 17 个百分点。这个失真在汇报场合是致命的——领导会以为 62% 那位什么都没干。正确做法是在「管理规则 → 编辑规则」里把最短条和最长条的类型都改成数字值分别填 0 和 1如果单元格是百分比格式值本身是小数如果是自定义数字格式显示成 0% 但底层存的是 0.62那最大值就填 1。提示最短条类型也支持百分比和公式。如果数据结构比较特殊比如有负值用公式会更灵活但绝大多数业务表用数字 0 和 1就够。改完之后62% 的人条形长度就是 62% 格宽79% 的人是 79% 格宽比例关系正确谁都能看懂。2.2 仅显示数据条让单元格变成纯条形单元格里既有数字又有条形视觉上比较挤尤其是列宽不够的时候数字会被条形压住或者条形挤成一小截。在编辑规则面板里勾选「仅显示数据条」部分版本叫「只显示数据条」数字就被隐藏了单元格里只剩一条纯条形。这个设置是做好看的进度条的必经一步。但要注意一个副作用数值被隐藏后鼠标点上去还是能看到公式栏里的真实值但截图、打印出来就只剩条形了。如果你的表需要留档或做数据分析建议保留一列原始数值列把进度条列单独放一列。2.3 灰色轨道单元格底色和数据条的叠加关系这是个非常好用但很少有人提的细节。数据条的绘制层级是单元格填充色在最底层数据条画在填充色之上文字画在数据条之上。利用这个层级关系你可以先给整片区域铺一层浅灰色填充比如 RGB 242,242,242然后再加数据条。效果就是已完成的部分是彩色条形未完成的部分露出浅灰底色视觉上就是一条完整的灰色轨道 彩色进度。比单纯的条形好看太多而且不需要任何辅助列。这个技巧在后面的分段方案里我会再用一次是拼装多段进度条的关键前提。设置路径是选中区域 → 开始 → 填充色单元格底色先铺好再叠条件格式。顺便说说边框。数据条规则里也有边框选项可以给条本身加边线。我的建议是选无边框因为加了边框之后条形和灰色轨道的衔接处会出现一条明显的竖线破坏整体感。另外单元格自身的网格线也建议关掉视图 → 取消勾选网格线整张表会干净很多。3. REPT 字符进度条 公式条件格式单格整体换色如果你要的是单元格里一条字符组成的进度条整条随数值换色这套方案是最省事的不需要辅助列一个单元格搞定。原理是用 REPT 函数把方块字符重复 N 次拼成条再用条件格式的公式规则去改这一格的字体颜色。3.1 REPT 公式怎么写才不会溢出最朴素的写法是REPT(█,$B2*20)REPT(░,20-$B2*20)问题是当 B2 稍微超过 1比如用户手滑填了 1.05$B2*20会变成 21前半段溢出后半段变成负数REPT 对负数参数会直接报#VALUE!。所以实际生产环境里我一般写成带 MIN/MAX 保护的形式REPT(█,MIN(20,ROUND($B2*20,0)))REPT(░,MAX(0,20-ROUND($B2*20,0)))拆开看就是三件事ROUND($B2*20,0)把 0~1 的完成率映射成 0~20 的整数格数20 这个数字就是总格数你可以按列宽随意调10 格更短更紧凑30 格更细腻但需要更宽的列。MIN(20, ...)防止正向溢出MAX(0, ...)防止负向溢出。实心块█U2588和浅色块░U2591拼起来就成了一条有填充感的进度条。如果你想要点阵风格把█换成●、░换成○也行想要更细的条可以只用|重复。我个人的偏好还是方块字符因为它在视觉上更接近真正的条形。3.2 字体不对齐是字符进度条最大的坑公式写对了但显示出来坑坑洼洼、长短不一八成是字体的问题。█和░这两个字符在不同字体下的宽度不一样。有些字体里░是半角宽度而█是全角拼起来就会出现实心部分比空心部分宽的错位感。解决办法是把这一列的字体换成等宽字体我个人常用 Consolas 或者 Courier New两者对这两个方块字符的渲染宽度都是一致的实测对齐效果很稳。小字号也能减轻错位感。我一般用 9 号或 10 号字条看起来更精细。另外关掉字体的自动缩放之类的设置让行高能撑住。注意如果你要把这个表发给别人对方的电脑上不一定装了 Consolas。更保险的做法是同时指定一个中英通用的等宽字体或者干脆把整列做成图片贴回去。跨设备一致性这件事字符进度条天生比真正的图形条要弱一些。3.3 条件格式公式里的 $ 是怎么算出来的现在是关键一步。我们想实现完成率 ≥ 80% 时进度条变绿60%~80% 变黄60% 变红。选中进度条那一列假设是 C2:C100开始 → 条件格式 → 新建规则 →使用公式确定要设置格式的单元格输入$B20.8然后点格式 → 字体 → 颜色选深绿加粗。再建两条AND($B20.6,$B20.8)$B20.6分别配黄色和红色。这里有两个新手最容易翻车的地方。第一进度值列和进度条列必须是两列。因为 REPT 公式所在的单元格它的值已经是一串文字了条件格式的公式没法从这串文字里读回数值。所以结构一定是B 列放原始完成率可以隐藏掉C 列放 REPT 进度条条件格式写在 C 列但公式引用 B 列。第二$ 的位置决定了判断的是同一行还是某一固定单元格。Excel 是根据你选中区域的左上角单元格来扶着写这条公式的。选中 C2:C100 时活动单元格是 C2你写的$B20.8里$B表示列绝对锁定所有行的判断都去看 B 列2前面不加$表示行相对会随行号自动漂移。所以 C50 这一格实际执行的公式是$B500.8。这正是我们要的效果。如果你写成$B$20.8那就变成所有行都在看 B2 这一个单元格整列颜色会完全一样——这是排查时最该先检查的一处。反过来如果你写成B20.8列也不锁那 C 列的规则会去看 C 列自己也就是那串方块文字文字 0.8永远为假整列都不会变色。3.4 规则顺序和如果为真则停止三条规则写完后如果出现颜色不对劲、有一条怎么都不生效去「条件格式 → 管理规则」看看。规则列表是从上往下依次匹配的默认是一条命中后还会继续往下匹配后面的规则会覆盖前面的。所以如果0.6 变红这条排在最后而≥0.8 变绿和0.6~0.8 变黄这两条的区间又写得有重叠就可能出现红条被黄条盖掉的情况。两个处理办法学会用「如果为真则停止」这个复选框。逻辑上互斥的规则比如三个区间完全不重叠其实不勾也没事但勾上之后 Excel 匹配到就不再往下算性能会好一点。用上移/下移按钮把规则排好顺序。我一般按区间从大到小排≥0.8 在最上0.6~0.8 中间0.6 在最后。另外提一句写区间的时候一定要用AND($B20.6,$B20.8)这种闭合写法不要偷懒只写一半。如果三条规则写成0.8、0.6、0.6那 0.9 这一格会同时命中前两条最终显示的是排在后面的那条的颜色跟你的预期可能相反。4. 辅助列分段叠加让一条进度条同时出现三种颜色前面那套方案是整条变色但有些场合你要的是一条进度条内部就分成绿、黄、红三段——比如一条 75% 的进度条前面 60% 是绿的中间 15% 是黄的。这个用单列做不到必须把一条条拆成几段分别渲染。思路很直接把 0~1 的区间切成几个连续的小区间每个区间用一列承载每列配一条颜色不同的数据条然后让这几列紧挨着排列视觉上就拼成了一条完整的彩色进度条。4.1 三段拆分公式怎么写假设 B 列还是完成率0~1我们把区间切成 0~0.5、0.5~0.8、0.8~1.0 三段分别放在 C、D、E 三列。列含义公式该列可能的最大值C低段0~0.5MIN($B2,0.5)0.5D中段0.5~0.8MAX(0,MIN($B2,0.8)-0.5)0.3E高段0.8~1.0MAX(0,$B2-0.8)0.2拿 B2 0.75 验证一下C2 MIN(0.75, 0.5) 0.5D2 MAX(0, MIN(0.75,0.8) - 0.5) 0.25E2 MAX(0, 0.75-0.8) 0。三段加起来正好 0.75没问题。再拿 B2 0.95 验证C2 0.5D2 0.3E2 0.15加起来 0.95。正确。这套公式的核心是MAX(0, ...)这个保护。没有它当完成率低于某段的起点时那段会算出负数数据条渲染负数会触发坐标轴逻辑条形方向可能反转看起来就乱套了。4.2 列宽 5:3:2 是怎么推出来的这一步是整篇文章里最容易做错的地方也是看着差不多但比例不对的根源。C、D、E 三列的跨度分别是 0.5、0.3、0.2。数据条的填充比例 该列当前值 / 该列设置的最大值。所以设置数据条的时候C 列数据条最小值 0最大值0.5D 列数据条最小值 0最大值0.3E 列数据条最小值 0最大值0.2这样 B2 1.0 时C 列填满0.5/0.5、D 列填满0.3/0.3、E 列填满0.2/0.2三段一起填满正好是完整的 100%。但光设置数据条还不够。如果三列列宽相同视觉上的比例就错了C 列的 0.5 值占了满格D 列的 0.3 值也占了满格看起来 C 段和 D 段一样宽而实际上 0.5 应该是 0.3 的 1.67 倍宽。所以列宽必须按各段跨度等比设置0.5 : 0.3 : 0.2 5 : 3 : 2。假设你想让整条进度条总宽对应 60 个字符单位那 C 列宽设 30、D 列宽设 18、E 列宽设 12。设置方法选中 C 列和 D 列和 E 列右键 → 列宽分别输入。注意这里只能一列一列设不能一次设三列不同值。设完之后如果觉得总宽不合适按 5:3:2 的比例等比缩放就行比如 25:15:10或者 12.5:7.5:5。4.3 拼装完成后的收尾工作三列数据条都加上之后还需要做几件事情才能让它看起来是一条完整的条而不是三个格子。第一先铺灰色底。按前面说的办法选中 C2:E100 整片区域给一个浅灰色填充。这样每列出数据条未覆盖的那部分就是浅灰的三段之间有自然的衔接不会出现断层。第二三列全部勾选仅显示数据条把 0.5、0.3 这些中间值隐藏掉否则中间会夹着一堆小数非常难看。第三数据条的选择上最短条和最长条都设数字值按上面表格填不要用自动。第四取消单元格之间的间隔感。Excel 相邻单元格之间默认有网格线画出条之后会看到一段一段的缝。解决办法是关掉视图里的网格线视图 → 显示 → 取消网格线同时给整个区域加一个统一的外边框或者干脆不加边框。我一般关网格线什么都不加最干净。第五如果三段的颜色想要平滑过渡比如低段浅绿、中段黄绿、高段橙红可以在每列的数据条规则里单独选颜色。这三条规则是独立的颜色互不影响这就是分段方案最大的优势所在——你想要几种颜色就能有几种只需要多加几列。代价也很明显列数变多公式要往下拖维护成本上升。如果完成率的阈值经常变比如季度调整考核标准每次都要改公式和列宽比较烦。所以我一般只在这张表做完就基本不动的场景下用分段方案。5. 图标集按档位换色最省事的方案说了这么多条形最后讲一个经常被忽略但实际最好用的方案图标集。如果你的真实需求是一眼看出哪些项目进度不达标而不是做一条好看的彩色进度条那图标集基本是最优解。配置五秒钟维护零成本而且不依赖列宽、不依赖字体。5.1 三种图标集的方向差异条件格式 → 图标集下面有一堆选项常用的有这几类三向箭头彩色向上绿箭头、横向黄箭头、向下红箭头三色交通灯圆形的红黄绿灯三色旗三面小旗子五个方框从空到满的方块视觉上其实最接近进度选择的时候默认的高低值方向不一定符合你的直觉。有些图标集里绿色/向上对应最大值红色/向下对应最小值但也有些图标集是反的。我踩过这个坑配置完发现完成率 90% 的项目显示红箭头第一反应是公式写错了查了半天才发现是图标方向的问题。解决办法是在「管理规则 → 编辑规则」里找到「反转图标次序」这个复选框勾上/取消勾上对比一下。5.2 分界值填百分比还是数字图标集的分界值类型有四种百分比、数字、公式、百分点值。这个区别很容易搞混。百分比按选定区域内实际数据的相对位置划分。如果区域内最小值是 0.62最大值是 0.79那填 67% 表示的是0.62 到 0.79 这段区间的 67% 位置也就是大概 0.734而不是绝对的 0.67。这个非常反直觉。数字按绝对值划分。填 0.8 就是 0.8填 0.6 就是 0.6。做固定阈值判断必须用这个。百分点值用于百分位统计一般业务表用不上。我一开始习惯性地填了 67%结果同一个阈值在不同月份的数据上表现不一致排查了很久才发现是百分比这种相对类型在作怪。所以做考核标准、预警线这种固定阈值一律选数字。至于分界值本身直接用小数 0.8、0.6 就行跟单元格是不是百分比格式无关。5.3 仅显示图标与反转次序和仅显示数据条对应图标集里也有「仅显示图标」这个选项。勾上之后单元格只显示图标数字被隐藏。但这里有个实际的取舍进度类的表我通常不建议隐藏数字。因为图标只给档位不给具体值看的人还得去问到底完成了多少。所以实际项目里我一般保留数字把图标放在数字前面或者后面作为辅助标识。勾选反转次序的时候要注意它只影响颜色的对应关系不影响图标形状的顺序改完之后最好拿几个典型值手动验证一遍。我一般会用 1.0、0.8、0.5、0.2 四个数填在测试行里看图标和颜色的对应是否符合预期确认后再把测试行删掉。6. 上线前要过的几道坎粘贴、重算速度、跨表复制和 mac 端功能做出来只是第一步真正在用的时候踩的坑往往在设计之外。下面这四类问题是我在帮别人做表时被问得最多的。6.1 粘贴数据把规则冲掉这是条件格式最经典的翻车场景。你用 CtrlC 从一个普通表格复制了一列数据CtrlV 直接粘到进度条那一列上粘完之后发现条件格式全没了。原因很简单直接粘贴会连带源单元格的格式一起覆盖目标区域条件格式规则是格式的一部分被源数据的格式替换掉了。解决办法有两个看你的具体场景如果只想更新数值、保留格式用选择性粘贴 → 数值快捷键在 Windows 上是 CtrlAltV 然后选数值或者粘贴后点右下角的小图标选值。如果整列数据都要替换先把原来的数据清空选中 → Delete 键注意 Delete 只清内容不清格式再粘贴内容。还有个小坑条件格式的规则是绑定在区域上的不是绑定在单元格上的。你在 A2 用的是$B20.8如果把这一格复制到 D 列规则范围会跟着扩展但公式里的$B还是指向 B 列这时候判断逻辑就错位了。跨列复制带条件格式的单元格一定要去管理规则里检查一下应用范围和公式。6.2 整列引用带来的卡顿条件格式的应用范围如果写成$A:$A或者$1:$1048576这种整列整行引用Excel 每次重算都要对这上百万个单元格遍历一遍规则。数据量大一点、规则多几条整个表格滚动都会卡。标准的做法是把范围限定在实际数据区比如$C$2:$C$1000预留一些行给后续追加数据用。如果你经常需要加行更优雅的方案是把数据区域转成表格CtrlT 或 CmdT表格在插入新行时会自动继承格式条件格式范围会自动扩展不用手动改。提示如果表格里有几百条不同的条件格式规则打开文件会明显变慢。定期去「管理规则」看看有没有重复的、失效的规则尤其是从别人那里接手过来的表删掉冗余规则能省不少时间。6.3 跨工作簿复制把带条件格式的单元格复制到另一个工作簿大部分情况下规则会跟着走但不是所有东西都完整。会丢失或降级的东西我整理了一下元素跨工作簿复制后的表现实心填充、边框、字体色通常保留数据条、图标集规则新版之间通常保留复制到旧版 .xls 文件会降级成纯色填充相对引用公式会按相对位置偏移可能失效自定义的数字格式一般保留但依赖自定义语言的会变区域引用整个工作表跨工作簿时会转换成实际范围可能出错所以我一般的做法是跨工作簿搬家的表搬完之后一定手动验证几个典型值看看颜色和条形的档位对不对。尤其是如果为真则停止这类设置跨工作簿复制后偶尔会被重置。如果只是想要格式不要数据用选择性粘贴 → 格式粘贴选项里的格式图标这样目标区域的数值不会被覆盖条件格式规则会合并进来。这个方式在维护多张同样结构的月度表时特别省事。6.4 mac 版 Excel 的几个差异用 Mac 办公的人越来越多这里有几个实际差异值得提前知道。入口基本一致。条件格式功能在 Mac 版 Excel 的「开始」选项卡里能找到和 Windows 版的位置差不多。新建规则、管理规则的逻辑也相同。管理规则的界面布局不同。Mac 版的管理规则对话框是另一个风格的窗口实时预览区域比较小改一条规则要点好几次才能看到效果。建议改之前先备份一份。字体渲染有差异。REPT 字符进度条在 Mac 上依赖字体渲染如果你在 Windows 上用的是 Consolas到 Mac 上可能没有这个字体方块字符可能显示成空心方块或者宽度不对。稳妥的做法是用两个平台都常见的等宽字体或者干脆用图标集方案替代字符条。快捷键不一样。打开单元格格式在 Windows 上是 Ctrl1Mac 上是 Cmd1。条件格式本身没有默认快捷键两边都要走菜单所以这部分体验差别不大。数据条的部分选项有精简。Mac 版数据条的编辑面板里边框和条形方向的选项比 Windows 版少一些。如果你做的表要在两个平台之间来回复制建议把复杂的视觉设置做得简单一点避免在另一个平台上打开就变样。我个人现在的习惯是凡是需要跨平台流转的进度条表一律用图标集或者最简单的单色数据条不用字符进度条也不用复杂的分段拼接。视觉上朴素一点但换来的是两端打开都不会变形。7. 一张按场景对照的配置速查表写到这里几个方案的核心差异和适用边界基本都覆盖到了。最后把我自己在实际项目里做选择时用的对照逻辑整理一下你可以直接照着对号入座。你的场景优先方案关键配置点大概耗时只想让达标/不达标的行整行变色公式条件格式 填充色公式用$锁列不锁行2 分钟单元格里想要一条字符进度条整条变色REPT 公式条件格式改字体色等宽字体 MAX/MIN 保护10 分钟想要一条真正的绿黄红分段进度条辅助列叠加多条数据条列宽按跨度等比最小值 0、最大值分段设30 分钟起只想一眼看出哪些落后了图标集分界值类型选数字注意反转次序3 分钟表格要经常加行转成表格 数据条表格自动扩展格式5 分钟要发给 Mac 同事图标集或单色数据条避开字符条和密集分段3 分钟关于耗时那一列我想多说一句分段进度条那三十分钟里有二十分钟是花在列宽调整上的。因为每次拖完列宽都要重新看一眼比例对不对而 Excel 的列宽单位是字符宽度不是像素所以没法精确输入。我后来的做法是先把总宽度拆成 50 个单位C 列设 25、D 列设 15、E 列设 10一次性按整数输进去比来回拖拽靠谱得多。另外还有个小技巧如果你经常要做同样结构的周报月报别每次都从头配。把调好的那行格式用格式刷或者选择性粘贴 → 格式应用到新数据上或者干脆做成一个模板文件每个月复制出来改数据。这个是回报率最高的一步省事操作我现在的所有进度类报表都是从一个叫进度模板的文件复制出来的里面预置好了三档颜色规则、灰色轨道和隐藏的数值列。最后说一个我自己的判断标准如果一个进度条方案需要超过两条规则才能实现我就会先问一下这个视觉需求是不是真的必要。实际工作中大多数想要彩色进度条的需求本质上是想让异常值跳出来。而让异常值跳出来这件事图标集或者一条简单的数值超标整格变红就足够了。把省下来的时间花在数据本身的准确性上往往更划算。
返回列表