手把手教你用EXCEL制作可以计划与实际对
比的动态甘特图
要制作动态的,可以进行计划与实际对比的甘特图,关键要解决两个问题:
1、计划时间与实际时间分成两行显示,这样才能够让甘特图的进度条也分成两行显示出来,实现计划与实际的对比;
2、使用数据透视表来查询,但是要解决透视表作为图表数据源时,如果发生变化,则图表也会错乱的问题。
下面是制作这种图表的步骤:
第一步、制作一个录入界面,同时用VBA将其保存到另一个作为数据库的表格中:
1、录入界面如下图所示:(注:录入界面中,计划时间与实际时间可以在同一行中。
)
2、作为数据库的表格如下图所示:(注:本表需要做成可以方便地生成数据透视表的二维表格,并且,这一步是关键步骤,要在这一步通过VBA把录入界面的数据在此时把计划时间、实际时间分成两行显示。
)
第二步、根据数据库生成几个数据透视表,其结构略有不同,自己根据需要进行调整(注:此处要使用OFFSET函数定义好上面数据库表中有效数据的范围。
):
数据范围=OFFSET(项目进度数据库!$A$1,,,COUNTA(项目进度数据库!$A:$A),COUNTA(项目进度数据库!$1:$1))
1、单项目查询:
2、多项目查询:
3、各项目汇总查询:(只显示每个工程项目的总时间,不显示明细时间)
第三步、制作一个辅助表,用简单的公式把上述几个数据透视表对应起来,所谓简单,即本sheet中某一格=透视表中某一格,但要注意如果透视表中的空白格,可能会显示为0,所以用IF函数作些调整,如
IF(C1<>"空白",单项目查询!$A$1,""):
到了这一步,制作甘特图所需的数据表格已经基本完成了。
接下来要准备好制作甘特图所需的数据源。
第四步、用OFFSET函数把甘特图所需的进度条1、2、3、4,Y座标轴名称(就是在图上显示的工作内容),甘特图的总数据范围定义好:
图表_进度条 1 =OFFSET(制图辅助!$C$1,1,1,COUNTA(制图辅助!$C:$C)-COUNTIF(制图辅助!$C:$C,"空白")-1)
图表_进度条 2 =OFFSET(制图辅助!$C$1,1,2,COUNTA(制图辅助!$C:$C)-COUNTIF(制图辅助!$C:$C,"空白")-1)
图表_进度条 3 =OFFSET(制图辅助!$C$1,1,3,COUNTA(制图辅助!$C:$C)-COUNTIF(制图辅
助!$C:$C,"空白")-1)
图表_进度条 4 =OFFSET(制图辅助!$C$1,1,4,COUNTA(制图辅助!$C:$C)-COUNTIF(制图辅助!$C:$C,"空白")-1)
图表_进度图Y轴名称=OFFSET(制图辅助!$C$1,1,-1,COUNTA(制图辅助!$C:$C)-COUNTIF(制图辅助!$C:$C,"空白")-1)
图表_制图辅助范围=OFFSET(制图辅助!$B$1,,,COUNTA(制图辅助!$C:$C)-COUNTIF(制图辅助!$C:$C,"空白"),6)
第五步、用普通制作甘特图的方法制作出甘特图:
首先,创建图表大概样式。
在图表向导中,选条形图当中的堆积条形图,并按步骤逐步操作,相关需要选定数据范围的地方,输入上面定义好的名称:。