利用Excel VBA实现高职学生考证信息的统计
2017-11-25唐娟
唐娟
摘 要:高职学生纷纷通过考证来提高自己的就业竞争力,学校教学部门需要了解学生的考证情况。本文利用Excel VBA编程,对高职学生考证信息进行归纳和统计,给出了可供参考的功能代码,为学校提供灵活、准确的考证资料。
关键词:Excel VBA 考证 统计
中图分类号:TP311 文献标识码:A 文章编号:1672-3791(2017)10(a)-0011-02
面对严峻的就业形势,高职学生纷纷通过“考证”来提高自己的就业竞争力,一般来说,高职学生所考的证书分为两类:一类是与本专业相近的职业资格证书,如电工证、物流师证、育婴师证等,另一类是公共类证书,如普通话水平证、英语四六级证、计算机等级证等[1]。高职学生考证“热”,学校教学部门也“热切”于了解学生的考证情况,如机电专业学生电工证的考证人数和通过人数、所有学生英语四级证的报考人数和通过率等。如果考证的原始成绩数据是excel电子表格,基于数量的数据统计只需要通过Excel函数进行汇总和计算即可,但是教学部门往往需要进一步了解的是:具体到每个教学班、每个学生的某个证书是否考过并是否通过。以公共类证书为例,想得到学生考证信息统计表(如图1所示),只用Excel函数功能无法实现。Microsoft Excel还有一个非常有用且功能强大的工具,即Excel VBA。
VBA是Visual Basic for Applications的缩写,是内嵌于office软件中的一个开发模块,这个模块提供程序自主开发,语言基础和VB(Visual Basic)相似,通过VB的编程完成需要的功能。
1 Excel中VBA编程和执行步骤
以Excel2010为例,VBA编程和执行程序的步骤如下[2]。
(1)点击“开发工具→Visual Basic编辑器”命令,进入“Visual Basic编辑器”窗口。
在左侧“工程资源管理器”窗口中,选中保存宏的工作簿,然后执行“插入模块”命令,插入一个新模块(模块1)。
(2)将相关宏代码输入或复制、粘贴到右侧的编辑窗口中。注意:宏的结构是:
Sub 宏名称()
VBA代码
End Sub
输入完成后,关闭“Visual Basic编辑器”窗口返回即可。
(3)执行该程序,可以点击“开发工具→宏”,选择相应的宏名即可。
2 考证统计的VBA代码编写
本文以计算机等级考试考证情况统计为例,给出实现过程。
首先打开一个工作薄,将历次计算机等级考试成绩全部拷贝到sheet1中,至少包含准考证号、姓名、身份证号、成绩四列,如图2所示。计算机等级考试准考证号最左边两位代表考试科目,图2中“15”为计算机等级考试一级科目之一,“24”和“29”为计算机等级考试二级科目。
然后,需要了解哪些学生的考证情况,就将这些学生的姓名、身份证号等信息放到sheet2表中,如图3所示。
再进行编程前的分析:为方便日后数值的汇总,图3中计算机一级和计算机二级两列的值,可以用“1”代表成绩合格,“0”代表成绩不合格,“-1”代表未参加过考试。程序逻辑为:将计算机一级和计算机二级列中状态值全部预设为“-1”,代表该科目未参加过考试。顺次取sheet2中的各行身份证号遍历sheet1成绩表,如sheet1中找到相同身份证号的记录,则判断相应的准考证号最左边两位代表的是一级还是二级,若该行记录中的成绩为及格,则将sheet2中相应级别下单元格的值置为1;如不及格,须判断该单元格内是否有为1的值,若不为1,则置为0。
程序逻辑分析完毕,按本文前述方法,为工作簿sheet2,插入一个VBA模块。该模块的主要代码如下:
For i = 2 To UBound(arr) ‘arr为sheet2数据区域
ls_identity_id = Sheet2.Range("c1").Rows(i).Value
For j = 2 To UBound(crr) ‘crr为sheet1数据区域
If Sheet1.Range("c1").Rows(j).Value = ls_identity_id Then
If Left(Sheet1.Cells(j, "a"), 2) = 15 Then
If Sheet2.Cells(i, "e").Value <= 0 Then
If Sheet1.Cells(j, "d") < 60 Then Sheet2.Cells(i, "e").Value = 0
Else Sheet2.Cells(i, "d").Value = 1
End If
End If
Else
If Sheet2.Cells(i, "f").Value <= 0 Then
If Sheet1.Cells(j, "d") < 60 Then Sheet2.Cells(i, "f").Value = 0
Else Sheet2.Cells(i, "e").Value = 1
End If
End If
End If
End If
Next
Next
執行以上程序,得到如下结果,如图4所示。
英语四六级等其它科目的考证信息统计可参考以上方法,不再赘述。有了图4的结果,如想汇总某个证书获证人数,可累加相应列中所有为“1”的值,汇总未参加考证的人数,可累加为“-1”的值。另外,根据实际需要,可以将数字“1”“-1”“0”整体替换为有实际意义的汉字,图1即为替换后的效果。
本文利用VBA编程归纳、统计高职学生考证信息,为学校教学部门提供了准确详细的资料,给出的功能代码,可供学校教学管理人员参考使用。
参考文献
[1] 曹志英.高职学生考证热现象的分析与思考[J].青年与社会:上,2015(5):162.
[2] 李晓玫,杨小平.Excel中的VBA程序设计[J].四川师范大学学报:自然科学版,2004(4):423-426.endprint