企业项目管理系统
主要用到公式有:VLOOKUP函数、Match函数、if函数、indirect函数,iferror函数
本文教程以最近发布的《企业项目管理系统》为例进行讲解。
1、基础数据
1.1 首先按下图所示创建5个工作表,分别命名为index、信息查询、信息录入、数据源、下拉信息。
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,""))”这个公式的意思是:如果当前行所在状态的开始时间有数据,结束时间没数据时,持续天数就为当前系统时间减去开始时间。如果当前行所在状态的开始时间有数据,结束时间也有数据时,持续天数就为结束时间减去开始时间。否则就返回空值。在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 输入录入信息的代码。如下图所示(下方有代码明细)
代码明细:
Sub 信息录入()
If Sheet1.Cells(6, 5) = "" Then
MsgBox "请先输入项目名!"
Exit Sub
End If
a = Sheet2.Cells(Rows.Count, 1).End(xlUp)(2, 1).Row
Dim i, k As Integer
i = Sheet2.Range("b1")
If i = 0 Then
Sheet2.Cells(a, 1) = Sheet1.Cells(6, 5) '项目名
Sheet2.Cells(a, 2) = Sheet1.Cells(9, 5) '开始日期
Sheet2.Cells(a, 3) = Sheet1.Cells(9, 7) '备注1
Sheet2.Cells(a, 4) = Sheet1.Cells(9, 6) '启动日期
Sheet2.Cells(a, 5) = Sheet1.Cells(10, 7) '备注2
Sheet2.Cells(a, 6) = Sheet1.Cells(10, 6) '计划日期
Sheet2.Cells(a, 7) = Sheet1.Cells(11, 7) '备注3
Sheet2.Cells(a, 8) = Sheet1.Cells(11, 6) '执行日期
Sheet2.Cells(a, 9) = Sheet1.Cells(12, 7) '备注4
Sheet2.Cells(a, 10) = Sheet1.Cells(12, 6) '监控日期
Sheet2.Cells(a, 11) = Sheet1.Cells(13, 7) '备注5
Sheet2.Cells(a, 12) = Sheet1.Cells(13, 6) '收尾日期
Sheet2.Cells(a, 13) = Sheet1.Cells(14, 5) '负责人
Sheet2.Cells(a, 15) = Sheet1.Cells(14, 7) '项目介绍
End If
If i > 0 Then
Sheet2.Cells(i, 1) = Sheet1.Cells(6, 5) '项目名
Sheet2.Cells(i, 2) = Sheet1.Cells(9, 5) '开始日期
Sheet2.Cells(i, 3) = Sheet1.Cells(9, 7) '备注1
Sheet2.Cells(i, 4) = Sheet1.Cells(9, 6) '启动日期
Sheet2.Cells(i, 5) = Sheet1.Cells(10, 7) '备注2
Sheet2.Cells(i, 6) = Sheet1.Cells(10, 6) '计划日期
Sheet2.Cells(i, 7) = Sheet1.Cells(11, 7) '备注3
Sheet2.Cells(i, 8) = Sheet1.Cells(11, 6) '执行日期
Sheet2.Cells(i, 9) = Sheet1.Cells(12, 7) '备注4
Sheet2.Cells(i, 10) = Sheet1.Cells(12, 6) '监控日期
Sheet2.Cells(i, 11) = Sheet1.Cells(13, 7) '备注5
Sheet2.Cells(i, 12) = Sheet1.Cells(13, 6) '收尾日期
Sheet2.Cells(i, 13) = Sheet1.Cells(14, 5) '负责人
Sheet2.Cells(i, 15) = Sheet1.Cells(14, 7) '项目介绍
End If
MsgBox "信息录入成功!"
Sheet1.Range("f9:f13") = ""
Sheet1.Range("e9") = ""
Sheet1.Cells(6, 5) = ""
Sheet1.Cells(14, 5) = ""
Sheet1.Range("G9:G14") = ""
End Sub
2.8 进度维护代码:
Sub 进度维护()
Dim i As Integer
i = Sheet2.Range("b1")
If i = 0 Then
MsgBox "数据库无此项目的数据,请先录入该项目的信息!"
Sheet1.Range("f9:f13") = ""
Sheet1.Range("e9") = ""
Sheet1.Cells(14, 5) = ""
Sheet1.Range("G9:G14") = ""
Exit Sub
End If
Sheet1.Range("f9:f13") = ""
Sheet1.Range("e9") = ""
Sheet1.Cells(14, 5) = ""
Sheet1.Range("G9:G14") = ""
If i > 0 Then
Sheet1.Cells(9, 5) = Sheet2.Cells(i, 2) '开始日期
Sheet1.Cells(9, 7) = Sheet2.Cells(i, 3) '备注1
Sheet1.Cells(9, 6) = Sheet2.Cells(i, 4) '启动日期
Sheet1.Cells(10, 7) = Sheet2.Cells(i, 5) '备注2
Sheet1.Cells(10, 6) = Sheet2.Cells(i, 6) '计划日期
Sheet1.Cells(11, 7) = Sheet2.Cells(i, 7) '备注3
Sheet1.Cells(11, 6) = Sheet2.Cells(i, 8) '执行日期
Sheet1.Cells(12, 7) = Sheet2.Cells(i, 9) '备注4
Sheet1.Cells(12, 6) = Sheet2.Cells(i, 10) '监控日期
Sheet1.Cells(13, 7) = Sheet2.Cells(i, 11) '备注5
Sheet1.Cells(13, 6) = Sheet2.Cells(i, 12) '收尾日期
Sheet1.Cells(14, 5) = Sheet2.Cells(i, 13) '负责人
Sheet1.Cells(14, 7) = Sheet2.Cells(i, 15) '项目介绍
End If
End Sub
2.9 清除数据代码
Sub 清除数据()
Sheet1.Range("f9:f13") = ""
Sheet1.Range("e9") = ""
Sheet1.Cells(6, 5) = ""
Sheet1.Cells(14, 5) = ""
Sheet1.Range("G9:G14") = ""
End Sub
提示:以上所有代码均写在模块中。插入模块的方法见下图。
3 指定宏:按下图所示顺序依次点击按钮右键—指定宏—信息录入—确定。将上面写的代码指定到对应按钮下。按同样方式将“清除数据”和“进度维护”指定宏即可
3.1 完成以上步骤后可录入数据测试。
3.2 统计图表:全选数据源中红框区域的数据,点击插入图表,然后再将图表剪切至“信息录入”界面
3.3调整图表大小至合适位置并设置背景颜色和格式。
3.4 汇总统计信息:在数据源表格的K1和M1单元格分输入“进行中”和“已完成”
在L1单元格输入公式:“=COUNTA(表1[项目名])-N1”(用于统计不是已完成项目的个数)在N1单元格输入公式:“=COUNTIF(表1[状态],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,数据源!$A:$O,3,FALSE),"")
以上公式的意思就是通过项目名去数据源表格中查找对应的值。这里如果对VLOOKUP函数不熟悉的话可以单独在网上去学习一下。
然后用同样的方式将F9到G14单元格区域都通过VLOOKUP函数去获得对应的值。这里主要是设计到函数的灵活运用,这里就不在详细说明。如果还有疑问可直接联系小编。
4.2 所有公式输入完成后选择一个录入了数据的项目名:然后依次选择所有开始时间—插入堆积条形图(如下图所示)然后调整条形图的大小和位置。
4.3 右键点击图表—选择数据
4.4 点击添加
4.5先选中系列值,在框选持续天数的数据。如下图所示
4.6 将蓝色区域设置为无填充,无线条
4.7 再点击选择数据—编辑
4.8 线选择轴标签—在框选项目状态。(如下图所示)
4.9 在图表类别的坐标轴选项中勾选—逆序类别
5.0 设置图标的背景格式和字体颜色。如下图所示
5.1 添加数据标签,选择图表右键添加数据标签即可,添加后点击数据可修改字体和字体颜色
5.2 做到这里我们的“信息查询”工作表也做完了。
6.超链接:页面切换都采用超链接的方式实现。连接方式见下图。这里不详细说明了。
结语:由于篇幅限制,本次的分享就到这里,由于涉及的知识点较多,所以有些地方讲解不是很细。如果有疑问可以在评论区留言,小编看到了会及时回复。有兴趣的可以结合作品同步学习,如有分享不到位的地方还请谅解!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。