先说结论
不用插件、不用VBA,纯Excel条件格式就能做出带颜色分区的甘特图。核心就三步:设置日期行 → 建立条件格式规则 → 用公式让进度条随完成率自动变色。
这个甘特图长什么样
先说效果:横轴是日期,纵轴是任务,每个任务一行彩色条。条的长短代表工期,颜色根据完成率自动变化——未开始灰色、进行中蓝色、已完成绿色、延期红色。
全程不需要画任何图形,纯粹靠单元格填充色实现。
第一步:搭建日期骨架表
新建一个表,结构如下
A列:任务名称B列:开始日期
C列:结束日期
D列:完成率(百分比)
E列起:日期列,从项目最早开始日期到最晚结束日期,每个日期占一列
比如项目从6月1日到6月30日,E1到AH1分别填6/1、6/2……6/30。
建议日期列用数字格式简化显示,选中E1到AH1,右键设置单元格格式为 M/D,只显示月/日。
任务数据填完后,表的基本骨架就搭好了。第二步:用公式标记任务区间
这是关键一步。我们需要在日期行的每个单元格里用公式判断:这个日期是否在该任务的工期范围内?
选中所有任务行对应的日期区域(不含标题行),比如E2到AH10。
然后在条件格式中用自定义公式。在选中区域的情况下,打开开始 → 条件格式 → 新建规则 → 使用公式确定要设置格式的单元格。
输入这个公式:
=AND(E$1>=$B2, E$1<=$C2)解释一下:
E$1是当前列的日期($1锁定行,拖动时行不变)$B2是当前任务的开始日期($B锁定列)$C2是当前任务的结束日期- AND确保日期在开始和结束之间
设置格式:填充色选浅蓝色。
应用后,每个任务的工期区间会自动显示蓝色填充。
第三步:根据完成率自动变色
单色不够直观。加上完成率的颜色分层:
规则1:已完成(绿色)
在同样的区域新建条件格式规则,公式:
=AND(E$1>=$B2, E$1<=$C2, E$1<($B2+($C2-$B2+1)*$D2), $D2>=1)格式:填充绿色
逻辑是:如果完成率≥100%,且日期在工期范围内,显示绿色。
规则2:进行中(蓝色)
这条其实就是第一步的规则,保持不变。
规则3:延期(红色)
公式:=AND(E$1>=$B2, E$1<=$C2, E$1>($B2+($C2-$B2+1)*$D2), $D2<1)
格式:填充红色
逻辑:日期超过了当前进度应该到的位置,但完成率还不到100%,说明延期了。
规则4:未开始(灰色)
公式:=AND(E$1>=$B2, E$1<=$C2, E$1>($B2+($C2-$B2+1)*$D2), $D2=0)
格式:填充浅灰色
注意规则的优先级顺序。在条件格式管理器中,红色和绿色的规则要排在蓝色之前,这样才能正确覆盖。
第四步:微调让图表更好看
几个小优化能让甘特图更像样:
隐藏网格线:视图 → 取消勾选网格线,让填充色更干净。加边框:选中日期区域,加浅灰细边框,让任务条边界更清晰。
日期列宽统一:选中所有日期列,统一列宽为3.5左右,太宽条会断开,太窄看不清。
冻结窗格:冻结A到D列和第1行,滚动日期时任务名和完成率始终可见。
隔行着色:给A到D列的数据区域加交替行颜色,方便对照任务和对应的条。
动态效果:改完成率颜色跟着变
这个甘特图最大的优点是完全动态。
当你修改某个任务的完成率时,颜色条会自动更新:
- 把完成率从50%改成100%,蓝色条全部变绿
- 把完成率从80%降到30%,部分条变成红色(延期)
- 新增任务填入日期后,条自动出现
适用场景和局限
适合中小型项目的简单进度跟踪,比如部门周计划、活动筹备、小型开发项目。
局限也很明显:
- 不支持任务间的依赖关系(A完成后B才开始那种)
- 日期列多了表会很宽,超过两个月建议拆分
- 不能鼠标拖拽调整工期(那是专业甘特图软件的事)
但如果你只是想在Excel里快速看一眼项目进度,这个方案比装插件快多了。
整体操作清单
- 建表:任务名、开始日期、结束日期、完成率 + 日期列
- 选中日期区域,加条件格式公式
=AND(E$1>=$B2, E$1<=$C2) - 新增完成率规则(绿/红/灰),注意优先级
- 隐藏网格线、调列宽、冻结窗格
- 修改完成率,验证颜色自动变化
夜雨聆风