企业项目管理系统
主要用到的公式有:VLOOKUP函数、Match函数、if函数、间接函数、iferror函数本教程以最近发布的《企业项目管理系统》为例。 1、基础数据1.1 首先,创建五个工作表,分别为“索引”、“信息查询”、“信息输入”、“数据源”、“下拉信息”,如下图所示。
1.2 在下拉信息工作表中创建项目名称表,输入如上所示的信息,然后按Ctrl+t。 1.3 将项目名称添加到名称管理器中。选择项目名称表,然后单击“公式”、“根据选择创建名称”、“第一行”和“确定”。
1.4 数据源表:创建数据源表如下图,红框是标题栏,所以需要输入,红框以外的就不用输入了。
1.5 项目状态统计:在数据源表旁边创建一个项目状态表,并在后续数量单元格中输入以下相应公式:=COUNTIF(表1[状态],R2)。
2、输入信息:在信息录入表格中输入下图的内容(注意行号和列号与下图相符)。
2.1 使用开发工具插入三个按钮控件,分别命名为“进度维护”、“数据清除”、“回车”。如下所示。
2.2 创建项目名称的下拉菜单。选择要在其中创建下拉信息的单元格,选择数据- 数据验证- 数据验证- 序列,输入=INDIRECT($D$6) 并确认。
2.3 要输入开始时间公式,首先选择单元格E10,然后输入公式=IF(F9='','',F9)。该表达式的作用是将上一个项目状态的结束时间复制到项目状态中。当前项目状态的开始时间。同样,将公式下拉至单元格E13。
2.4 输入连续天数的公式:选择单元格H9 并输入以下公式。 "=IF(AND(F9='',E9''),TODAY()-E9,IF(AND(F9'',E9''),F9" - E9,''))" 这个表达式是这样的意思如果当前行状态开始时间有数据,结束时间没有数据,则持续时间为当前系统时间减去开始时间。当前行状态的开始时间如果时间有数据且结束时间也有数据,持续时间为结束时间减去开始时间,否则返回NULL值,在H9中输入公式,向下滚动并输入H13。
2.5 输入项目状态公式:选择单元格I9,输入公式“=IF(E9='','',IF(F9='',D9,IF(F10='',D10,IF(F11=' ) ', D11 ,IF(F12='',D12,IF(F13='',D13,'完成')))))" 这个公式的一般意义是确定每个项目的结束时间,它是2.6 在数据源B1 单元格中输入公式:“=IFERROR(MATCH(信息条目!$E$6,数据源!$A:$A,0),0 )” 该公式为主要用于确定数据录入单位,为方便后续代码录入,数据源下方图中B区域存在网格选择的项目名称。
2.7 选择开发工具-Visual Basic,输入代码并输入信息。如下图所示(详细代码如下)
代码详情:子信息输入()If Sheet1.Cells(6, 5)='' thenMsgBox '请先输入项目名称! 'Exit SubEnd ifa=Sheet2.Cells(Rows.Count, 1).End( xlUp)( 2, 1).RowDim i, k As Integeri=Sheet2.Range('b1')If i=0 thenSheet2.Cells(a , 1)=Sheet1.Cells(6, 5) '项目名称Sheet2.Cells(a, 2)=Sheet1.Cells(9, 5) '开始日期Sheet2.Cells(a, 3)=Sheet1.Cells(9, 7) '备注1Sheet2.Cells(a, 4)=Sheet1.Cells(9 , 6) '启动日期Sheet2.Cells(a, 5)=Sheet1.Cells(10, 7) '备注2Sheet2.Cells(a, 6) )=Sheet1.Cells(10, 6) '预定日期Sheet2.Cells( a, 7) )=Sheet1.Cells(11, 7) '备注3Sheet2.Cells(a, 8)=Sheet1.Cells(11, 6) '执行日期Sheet2.Cells(a, 9)=Sheet1.Cells(12, 7) '备注4Sheet2.Cells(a, 10)=Sheet1.Cells(12, 6) '监控日期Sheet2.Cells(a, 11)=Sheet1.Cells(13, 7) '备注5Sheet2.Cells(a, 12 )=Sheet1 .Cells(13, 6) '结束日期Sheet2.Cells(a, 13)=Sheet1.Cells(14, 5) '责任人Sheet2.Cells(a, 15)=Sheet1.Cells(14, 7) '结束项目介绍IfIf i 0 thenSheet2.Cells(i, 1)=Sheet1.Cells(6, 5) '项目名称Sheet2.Cells(i, 2) )=Sheet1.Cells(9, 5) '开始日期Sheet2.Cells( i, 3)=Sheet1.Cells(9, 7) '备注1Sheet2.Cells(i, 4)=Sheet1.Cells(9, 6) '开始日期Sheet2.Cells(i, 5)=Sheet1.Cells( 10, 7) '备注2Sheet2.Cells(i, 6)=Sheet1.Cells(10, 6) '预定日期Sheet2.Cells(i, 7)=Sheet1 .Cells(11, 7) '备注3Sheet2.Cells(i , 8) )=Sheet1.Cells(11, 6) '执行日期Sheet2.Cells(i, 9)=Sheet1.Cells(12, 7) '备注4Sheet2.Cells(i, 10)=Sheet1.Cells(12, 6 ) '监测日期Sheet2.Cells(i, 11)=Sheet1.Cells(13, 7) '备注5Sheet2.Cells(i, 12)=Sheet1.Cells( 13,6) '结束日期Sheet2.Cells(i, 13 )=Sheet1.Cells(14, 5) '负责人Sheet2.Cells(i, 15)=Sheet1.Cells(14, 7) '项目介绍End IfMsgBox '通知已成功录入! 'Sheet1.Range('f9:f13')=''Sheet1.Range('e9')=''Sheet1.Cells(6, 5)=''Sheet1.Cells(14, 5)=''Sheet1.Range(' G9:G14')=''Sub2.8进度维护代码结束:
Sub Progress Maintenance()Dim i As Integeri=Sheet2.Range('b1')If i=0 thenMsgBox '数据库没有该项目的数据。请先输入该项目的信息。 'Sheet1.Range('f9:f13')=''Sheet1.Range('e9')=''Sheet1.Cells(14, 5)=''Sheet1.Range('G9:G14')=''结束subend IfSheet1.Range ('f9:f13')=''Sheet1.Range('e9')=''Sheet1.Cells(14, 5)=''Sheet1.Range('G9:G14')=''如果i 0 thenSheet1.Cells(9 , 5)=Sheet2.Cells(i, 2) '开始日期Sheet1.Cells(9, 7)=Sheet2.Cells(i, 3) '备注1Sheet1.Cells(9, 6)=Sheet2.Cells(i, 4 ) '开始日期Sheet1.Cells(10, 7)=Sheet2.Cells(i, 5) '备注2Sheet1.Cells(10, 6)=Sheet2.Cells(i, 6) '预定日期Sheet1.Cells(11, 7 )=Sheet2.Cells(i, 7) '备注3Sheet1.Cells(11, 6)=Sheet2.Cells(i, 8) '执行日期Sheet1.Cells(12, 7)=Sheet2.Cells(i, 9) ' 备注4Sheet1.Cells(12, 6)=Sheet2.Cells(i, 10) '监控日期Sheet1.Cells(13, 7)=Sheet2.Cells(i, 11) '备注5Sheet1.Cells(13, 6)=Sheet2 . Cells (i, 12) '结束日期Sheet1.Cells(14, 5)=Sheet2.Cells(i, 13) '负责人Sheet1.Cells(14, 7)=Sheet2.Cells(i, 15) '项目介绍End IfEnd Sub2 .9 清除数据代码
子清除data()Sheet1.Range('f9:f13')=''Sheet1.Range('e9')=''Sheet1.Cells(6, 5)=''Sheet1.Cells(14, 5)=''Sheet1 。 Range('G9:G14')=''End 子提示:以上代码全部写在一个模块中。如何插入模块请参考下图。
3 指定宏:右键单击图中的按钮指定宏输入信息单击确定。将您上面编写的代码分配给相应的按钮。同样,对于“数据删除”和“进度维护”,只需指定宏即可。
3.1 完成上述步骤后,即可输入数据进行测试。
3.2 统计图表:选择数据源红框区域内的所有数据,点击插入图表,将图表剪切到“信息输入”界面。
3.3 调整图表大小至合适位置并设置背景颜色和格式。
3.4汇总统计:在数据源表的K1和M1单元格中输入“进行中”和“完成”,在L1单元格中输入公式:“=COUNTA(表1[项目名称])-N1”输入公式=单元格N1 中的COUNTIF(Table 1 [Status], M1)(用于计算已完成项目的数量)。
3.5 在“信息输入”单元格的E19至E21中输入以下公式,得到相应的值=数据源!L1+数据源!N1=数据源!N1=数据源!L1 现在,这里“信息”来了。实现了“入口”工作台的所有功能。 4、信息查询:这里可以直接将“信息录入”工作表复制到“信息查询”工作表中。随后我们将删除相关信息。调整页面布局,如下图所示。
4.1 在单元格E9 中输入公式。=IFERROR(IF(VLOOKUP($E$6,数据源!$A:$O,2,FALSE)=0,'',VLOOKUP($E$6,数据源!$A:$O),2,FALSE)), '') 在单元格F9 中输入公式:=IFERROR(IF(VLOOKUP($E$6,数据源!$A:$O,4,FALSE)=0,'',VLOOKUP($E) $6,数据源!$ A:$O,4,FALSE)),'') 在单元格G9 中输入公式:=IFERROR(VLOOKUP($E$6,Data Source!$A:$O,3,FALSE),'' ) 以上表达式就是通过项目名称在数据源表中找到对应的值。如果你不熟悉这里的VLOOKUP函数,你只能在线学习。接下来用同样的方法通过VLOOKUP函数获取单元格区域F9到G14中对应的值。这里的主要目的是设计功能以便能够灵活使用,因此这里不再详细解释。如有疑问,请直接联系编辑。
4.2 输入所有公式后,选择输入数据的项目名称。然后按顺序选择所有开始时间。插入堆叠条形图(见下图)并调整条形图的大小和位置。
4.3 右键单击图表并选择数据
4.4 点击添加
4.5 首先选择系列值,然后在框中选择天数数据。如下所示
4.6 将蓝色区域设置为无填充或线条
4.7 单击选择数据-编辑。
4.8 线选择轴标签- 框选择项状态。 (如下所示)
4.9 勾选“图表”类别中的“轴”选项——反转类别
5.0 设置图标的背景格式和字体颜色。如下所示
5.1 要添加数据标签,右键单击图表添加数据标签,然后单击数据更改字体和字体颜色。
5.2 至此,您也完成了信息查询工作表。 6.超链接:利用超链接实现页面切换。连接方法请参考下图。我这里就不详细说了。
结论:由于篇幅限制,我只将这篇文章分享到这里,但由于它包含的知识很多,所以有一些部分我没有详细解释。如果有任何疑问,请在评论区留言,小编会及时回复。如果有兴趣的话可以一边工作一边学习,所以分享中如有错误还请多多包涵!