平淡
比如图1是某公司一个项目的进度计划表,按图示先在B2单元格中输入任务的开始时间,在C2到C7单元格中依次输入每个子项目的预计耗时。接着在B3单元格中输入公式“=B2+C2”(表示下个项目的开始时间是“上个项目的开始时间+预计耗时”),
然后下拉填充到B7单元格,这样便可以将每个子项目的开始时间自动地计算出来了(图2)。
为了方便查看,我们先在A13单元格中随意输入一个日期,接着在D2单元格中输入公式“=IFS(B2>$A$13,0,(B2+C2)<$A$13,C2,B2<=$A$13,$A$13-B2)”,然后下拉填充到D7单元格。再定位到E2单元格并输入公式“=C2-D2”,下拉填充到E7单元格(图3)。
公式解释:
在D列通过I FS函数将B列中的日期(开始时間)和A13单元格中的日期进行对比并显示对应的值。
1如果B列中的日期比A13单元格中的大,那么“已完成”就显示为0,因为项目尚未开始。
2如果“B2+C2”比A13单元格中的日期小,那么“已完成”就显示为C2单元格中的数值,即已过去的天数。
3如果B列中的日期小于等于A13单元格中的日期,则“已完成”就显示为“A13-对应B列单元格”的数值,表示任务只完成其中的一部分。
最后在F2单元格中输入公式“=SUM($C$2:C2)”,然后下拉填充到F7单元格(图4)。该公式表示从C2单元格开始对数值进行累加,目的是为了在下个任务的甘特图的前方叠加上个任务已完成的数值占位符,这样前后任务的甘特图才能像图1所示那样无缝地衔接排列。
构建完数据后,我们就可以制作甘特图了。在H2单元格中输入公式“=REPT("█",D2)&REPT( " ? " , E 2 ) ”,H 3 单元格中输入公式“ = R E P T ( " " , F 2 * 4 )&REPT( " █ ", D3)&REPT ( "?",E3)”并下拉填充到H7单元格,同时将H2:H7区域的字体设置为“等线”、加粗显示(图5)。
公式解释
使用REPT函数根据D列和E列中的数值,分别重复填充“█”和“?”字符作为“已完成”和“未完成”的图标(这两个字符通过点击“插入→符号”进行选择)。H2单元格作为初始单元格直接填充字符,从H3单元格开始添加函数“=REPT(" ",F2*4)”(使用空格填充)并和原来的公式进行连接,因为要达到图1所示的前后衔接排列效果,在H3单元格中的字符图标之前要增加H2单元格中数值的占位空格。比如在图1中H 2单元格对应的数值是“5”,因此要增加“5*4=20”个空格字符(正好对应5个“█”字符,一个字符对应4个半角空格字符)。
接下来选中H2: H 7区域,依次点击“开始→ 条件格式→ 新建规则→只为包含以下内容的单元格设置格式”,设置一个包含“█”字符的单元格,将其字体颜色设置为“绿色”(表示项目全部完成)。同上,设置一个包含“?”字符的单元格,字体颜色设置为“红色”(表示项目未完成)。再设置一个包含“█”和“?”字符的单元格,字体颜色设置为“蓝色”(表示项目正在进行中),这样每个项目都可以通过对应的图标和颜色进行区分了(图6)。
然后定位到H1单元格并输入公式“=IFS(B2>A13,"任务尚未开始",B2<=A13,TEX T(A13,"y y y/mm/dd")&"工作进度图")”,最后在G9:G12区域中添加图标备注文字。
完成上述的操作后,我们只需更改A13单元格中的日期,那么甘特图中的图标就会自动发生变化了。比如在A1 3 单元格中输入2021/4/27,因为项目尚未开始,此时甘特图中的图标全部显示为“?”(表示项目均未完成),同时它的标题显示为“任务尚未开始”。如果在A13单元格中输入2021/5/18,这时已经超过所有任务的日期,此时甘特图中的图标全部显示为绿色的“█”(表示项目已经全部完成),同时它的标题显示为“2021/5/18工作进度图”(图7)。
当然,在实际使用时A13单元格是要和当天日期相对应的,在A 1 3 单元格中输入公式“=TODAY()”,再将不需要的D、E、F列隐藏。以后我们每天打开工作表后就可以看到甘特图中的内容和标题都会发生不同的变化,这样查看工作进度是不是更方便了(图8)?