APP下载

用ExcelVBA实现党统数据分析自动化

2015-08-28朱洁兰

中国教育技术装备 2015年14期
关键词:统计图表

朱洁兰

摘 要 介绍使用ExcelVBA工具进行编程,实现企事业单位党委组织部党员信息数据分析自动化的过程。设计程序的功能结构,包括年龄、入党时间、学历、职称、入党积极分子年龄结构分析功能;给出程序的实现过程详细介绍,从导入数据、清理数据到编码的思路和实现方法。

关键词 党员信息统计;ExcelVBA;统计图表

中图分类号:TP391.13 文献标识码:B

文章编号:1671-489X(2015)14-0052-03

1 前言

在企事业单位党委组织部每年都要进行固定的党员信息统计的任务,统计的数据包括所有党员的工资(用于计算党费收缴比例)、学历、职称等各类人事履历数据信息。对于这些数据需要按照年龄段、时间段、不同职称等进行百分比统计。对于党务管理人员来说,这些常规事务性工作每年都要重复,除了数据源不同外,其他的统计口径基本固定。为了简化这一工作,笔者在常用的Office办公软件Excel上进行VBA编程,实现党统数据分析自动化。

2 程序功能结构图

ExcelVBA就是在Excel软件中进行编程,编好的自动化功能可以在相应的Excel模板中使用。Office软件都带有VBA编程的功能,不需要单独安装编译环境。

整个软件结构有五项自动化功能,每一个功能都是针对党员信息中的某一个属性进行分类计数统计的。

1)党员年龄结构分析:30岁及以下;31~35岁;36~40岁;41~45岁;46~50岁;51~55岁;56~60岁;61~65岁;66~70岁;71岁及以上。

2)党员入党时间结构分析:1949年10月—1966年4月;1966年5月—1976年10月;1976年11月—1978年12月;1979年1月—2002年10月;2002年11月—2012年10月;2012年11月及以后。

3)党员学历结构分析:研究生;大学本科;大学专科;中专;高中、中技;初中及以下。

4)党员职称结构分析:教授;副教授;讲师;其他。

5)入党积极分子年龄结构分析:30岁及以下;31~

35岁;36~40岁;41~45岁;46~50岁;51~55岁;56~60岁;61~65岁;66~70岁;71岁及以上。

3 程序实现过程

下面说明一下该自动化程序的实现过程。笔者是在Excel 2007环境下完成程序的开发过程的,其中用到的关于Excel数据透视表、Excel图表的对象代码,同样适用于Excel2003及以后的其他版本。

导入数据 首先要在Excel模版中导入企事业单位的党员信息数据,包含党员的姓名、性别、民族、出生年月、文化程度、参加工作时间、入党时间、职称、职称评定时间、现任职务等基本信息。这些数据导入到Excel模板的“源数据”工作表中。

整理数据格式 在Excel模板中有些特定的字段需要规范数据格式,如“sheet1”工作表是用来统计入党时间的,要求在A列复制党员的入党时间,B列放入统计的入党时间节点;根据党员统计表的格式要求,这两个字段都统一写成yyyy.mm的格式。

设计功能结构 在Excel模板的“源数据”工作表中导入党员基本信息,其他工作表用于实现各项功能。在表1(程序功能结构)中有五个功能,分别用五个工作表来实现。在每一个相应功能的工作表中执行相应的宏代码即可。

编写代码 本Excel模板要编写五段宏代码,实现的功能都是根据党员基本信息的数据自动产生数据统计结果和图表,它们的程序流程大致相同。程序流程如下:根据用户选择的不同的分析类别触发不同的事件过程;根据不同的分析类别的要求,在后台进行计算,统计出每一个类别的总人数;按照指定的格式显示在工作表中;根据统计结果插入相应的统计图。

4 程序部分代码展示

以下代码实现了党员入党时间统计的功能,根据所有党员的入党时间统计若干个指定的入党时间节点之间的人数[1],并形成统计结构饼图。

Sub Macro1()

Range(“G2“).Select

ActiveCell.FormulaR1C1 = “=LEFT(R[0]C[-6],4)+TRUNC

(MID(R[0]C[-6],6,2)/12,3)”

//在G2单元格把A2单元格的入党时间转化为数字,年和月信息用小数来表示

Set myRange1 = Worksheets(“Sheet1”).Range(“A1:

A10000”)

answer1 = Application.WorksheetFunction.CountA

(myRange1)

//answer1是入党人数,A列是所有党员的入党时间列表

Selection.AutoFill Destination:=Range(“G2:G” & answer1),

Type:=xlFillDefault

//在G列把所有A列的入党时间转化为数字,用自动填充公式的功能实现

//在H列转换时间断点B列的日期为数字,年和月信息用小数来表示

Range(”h3”).Select

ActiveCell.FormulaR1C1 = ”=LEFT(R[0]C[-6],4)+TRUNC

(MID(R[0]C[-6],6,2)/12,3)”

Set myRange2 = Worksheets(”Sheet1”).Range(”B1:

B10000”)

answer2 = Application.WorksheetFunction.CountA

(myRange2)

//answer2是时间断点的个数

answer2 = answer2 + 1

Selection.AutoFill Destination:=Range(”H3:H” & answer2),

Type:=xlFillDefault

//用自动填充公式的功能输出时间分段标志

Range(“C3“).Select

ActiveCell.FormulaR1C1 = ”=R[1]C[-1]&””~””&RC[-1]”

Selection.AutoFill Destination:=Range(”C3:C” & answer2),

Type:=xlFillDefault

//在C列显示文字,表示是哪两个时间节点之间的数据

Range( “C2“ ).Select

ActiveCell.FormulaR1C1 = "=R[1]C[-1]&""以后"""

//在C2单元格显示文字,最后一个时间节点以后

Range(”C” & answer2).Select

ActiveCell.FormulaR1C1 = "=R[0]C[-1]&""以前"""

//显示文字,在第一个时间节点以前

//以下代码统计各时间段的入党人数

Range(”I2”).Select

ActiveCell.FormulaR1C1 = “=COUNTIF(R2C7:R” &

answer1 & “C7,””>””&R[1]C[-1])”

Selection.AutoFill Destination:=Range(“I2:I” & answer2), Type:=xlFillDefault

Range(“D2”).Select

ActiveCell.FormulaR1C1 = “=RC[5]”

Range(”D3”).Select

ActiveCell.FormulaR1C1 = ”=RC[5]-R[-1]C[5]”

Range(”D3”).Select

Selection.AutoFill Destination:=Range(”D3:D” & answer2),

Type:=xlFillDefault

For Counter = 2 To answer2

Set curCell = Worksheets(“Sheet1”).Cells(Counter, 4)

curCell.Select

Selection.Copy

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=

xlNone, SkipBlanks _

:=False, Transpose:=False

If curCell.Value< 0.01 Then curCell.Value = 0

Next Counter

//以下代码清空中间的计算过程

Columns(”E:I”).Select

Selection.Delete Shift:=xlToLeft

//以下代码自动插入图表,形成统计分段时间人数的饼图

Range(”C1”).Select

Set curCell = Range(ActiveCell, ActiveCell.Offset

(answer2 - 1, 1))

ActiveSheet.Shapes.AddChart.Select

ActiveChart.SetSourceData Source:=curCell

ActiveChart.ChartType = xlPie

End Sub

5 程序效果

对于党员入党时间结构分析功能的程序效果,图1是程序运行结束后计算出来的最终结果;图2是程序运行过程中的计算得出的中间数据,在程序结束后自动删除;图3是根据最终结果自动形成的统计图。

6 程序的可改进之处

该程序对于党员信息统计工作人员的好处是:以前要定期完成的党员信息统计工作现在有一部分可以一键完成,只要把“源数据”工作表中的人员信息定期更新,就能得到相应结构分析的结果。笔者认为程序的局限性在于相对于党员信息统计的整体任务而言,功能还是较少,后续可以继续扩展[2]。如在分层次的统计中,先分别计算出35岁以下和35岁以上党员中女性、少数民族党员的比例,然后合计所有党员中女性、少数民族党员的比例。

参考文献

[1]吴智.基于Excel VBA高校毕业设计文档快速生成系统的开发[J].电脑知识与技术,2013(2):302-305.

[2]廖明梅,舒清录.Excel VBA在对口中职招生考试中的应用[J].微型电脑应用,2014(7):58-61.

猜你喜欢

统计图表
统计图表的数据分析与应用
艺术跨学科之美——基于第五届中国中小学生统计图表设计活动的思考
2019年1-5月全国商用车市场销售统计图表
2019年1-4月全国商用车市场销售统计图表
2018年1—5月全国商用车市场销售统计图表
2017年1—8月全国商用车市场销售统计图表
2016年1-11月全国商用车市场销售统计图表
2016年1—8月全国车用柴油机市场销售统计图表
2015年1-10月全国商用车市场销售统计图表
2015年1-4月全国商用车市场销售统计图表