利用Execl_VBA建立学校成绩分析系统
2018-09-15太原财政金融学校
太原财政金融学校 李 洁
学生考试成绩管理是每个学校重要的日常管理工作之一。由于学校的参加人数多,人工管理学生成绩,已经无法满足信息化时代的要求。在学生考试后,每个学校都有一套适合自己学情的特色成绩分析方法对班级和学科成绩进行系统分析。以前采用人工统计方法费时费力,统计一个年级的成绩需要3-4天时间,成绩的时效性不够。我有幸参与了某校《学校成绩系统》的开发工作。
利用Excel函数SUM()、AVERAGE()等函数建立模板的方式,无法满足大量数据的分析,经测试,函数在运行大量数据时计算效率低,运行慢,对计算机资源占用严重。利用 Excel VBA,参考《EXCEL_VBA 完全手册》 、《ExcelVBA实战技巧精粹》等书籍,最后决定利用ExcelVBA中的数组、字典解决程序运行效率问题。
通过与学校教研室负责人、教研员等沟通,调研了学校成绩分析系统的具体需求,学生成绩的计算过程及方法。根据需求进行如下规划与准备,程序编制的过程中设置如下几个主要模块:
安装Office 2010 利用ExcelVBA 的程序设计功能完成对Excel表格数据的计算。
下图为主界面,有8张工作表分别为“基础数据”,“考试成绩”、“排名”、“均分”、“本次名次”、“名次段”、“对比名次”、“均分名差负值表”,这8张工作表分别放不同的分析数据。表格内容“班级”、“层次”、“班主任”、“采样数”这四列为固定列,后期在数据分析中,程序要读取这些项目,所以这些项目名不能发生改变,表格的其它列为学科列。界面上有9个工作按钮,执行不同的程序代码,这9个按钮为“读入考试成绩”、“计算排名”、“计算采样均分”、“计算采样均名次”、“名次段统计”、“读入对比名次”、“均分名差负值表”、“输出结果”、“清除内容”,其中“名次段统计”可以对名次段的名次间隔进行设置。
?
这里我们重点讲解年级“均分”表是如何通过ExcelVBA实现的,该校每个班级层次不同对应的采样人数不同,例如:1401班人数为52人,采样数为48人,那么1401班的语文均分就是语文前48名学生平均分,数学均分是数学前48名学生平均分,这样的计算方法如果用Excel函数去计算会很繁琐,很费时间,所以我们利用ExcelVBA的Dictionary(字典)来完成。Dictionary对象有它独有的方法和属性,Dictionary对象用于存储两个相关联的一维数组,包括条目和关键字,所以也可以将Dictionary看作是特殊的数组,由于Dictionary对象的关键字Key具有唯一性,因为可以通过它提取一组数值的唯一值,而且Dictionary对象可以借助Keys 方法一次性输出。“均分”工作表中计算的基础数据是依据“排名”工作表的数据得来的。
全年级成绩排名表
?
均分模块代码如下:
《学校成绩分析系统》使用方便,操作简单,容易上手,可以生成丰富、灵活的统计报表,可以对学生信息、教师信息、成绩信息进行维护,可快速准确地提供成绩分析结果,大大增强了学校成绩分析的时效性。