欢迎来到天天文库
浏览记录
ID:31359219
大小:106.50 KB
页数:5页
时间:2019-01-09
《基于excel vba的多考场电子成绩自动统计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于ExcelVBA的多考场电子成绩自动统计 摘要:随着计算机技术的飞速发展,高校本科课程考核方式的改革,诸多高校已从传统的纸质试卷考核转为无纸化考核,减少了教师工作量,极大地提高了教师的工作效率。然而,若要对一门课程多考场的许多Excel表格中的成绩进行相关统计,全靠人工手动计算不仅耗时耗力,而且还容易出错。为此,利用ExcelVBA方便、灵活、功能强大等特点实现多张表格成绩的自动整合与统计,简化了教师的工作,提高了效率。 关键词:ExcelVBA;电子成绩;自动统计 中图分类号:TP393文献标识码:A文章编号:1009-
2、3044(2016)15-0218-02 1引言5 在高校日常教学中,课程考核占据十分重要的地位,是教学中必不可少的环节,根据考核可以检查课程制定的目标是否实现了教育目的,可以准确地判断出学生掌握课程的程度,以方便课程教学设计的有效改进[1]。鉴于传统纸质试卷考核的出卷、阅卷、统计分析成绩工作量大等诸多不足,许多高校采用无纸化上机考核方式,全部计算机阅卷,减轻了教师的工作[2]。然而,对于像大学计算机这种全校性质的公共课程的考核,因为人数较多,机房有限,机器数量有限,往往组织一场考试是不够的,需要组织多场考试,而每一场考试后都会
3、生成一份本次考试的电子成绩。若想了解所有考生本次考试的情况,并对所有学生的各分数段的人数进行统计分析,需要将各个考场的数据进行整合。如果Excel表格的数量不多,人工统计无妨;如果数量较多,完全手工统计,不仅耗时耗力,而且易出错。 为了解决上述问题,将教师从繁重的手工劳动中解放出来,可采用Excel作为系统编写工具,Excel自带的系统开发工具VBA(VisualBasicforApplicatio)方便、灵活、功能强大等特点,可以直接对Excel对象进行编程[3],实现多张电子表格成绩的自动整合,大大简化了教师的工作,提高了其工
4、作效率。 2电子成绩原始数据收集 2.1原始数据收集 由于各高校采用无纸化考核的工具不同,因此每一次考试产生的电子成绩的文件类型也可能不同,可能是.txt,.xls/x或.doc/x等不同类型的文件。本文编写的程序只针对.xlsx格式的文件,若考试成绩的文件类型非.xlsx格式,需要将成绩数据保存在.xlsx格式的文件中。 2.2数据预处理 新建Excel工作表,将文件类型改为xlsb格式的文件,取名为“整合各表工具”。将各考场的excel成绩表以及xlsb文件放到同一路径下,xlsb格式的文件中会呈现具体的代码。 3各
5、考场成绩的统计 3.1用VBA代码实现各表的整合 打开.xlsb格式的文件,按快捷键Alt+F11打开编写代码的环境,插入模块,在模块中编写代码,具体代码如下: Sub整合各表()5 thispath=ThisWorkbook.Path'指当前工作薄的路径 DimSAKfileAsString’定义程序执行时读取当前表的文件名 SAKfile=Dir(thispath&"\*.xlsx")’文件名获取的方式是当前路径下.xlsx格式的文件名 DoWhileSAKfile""’判断文件名不为空的时候执行循环 IfSAK
6、fileThisWorkbook.NameThen DimmAsLong SetSAK=Workbooks.Open(thispath&"\"&SAKfile)’顺次打开当前路径下.xlsx格式的文件 SetSAKsheet=SAK.Worksheets(1) m=SAKsheet.Range("A1048576").End(xlUp).Row’该变量为打开的表中最后一行的行数 SBKtemp=ThisWorkbook.Worksheets(1).Range("A1048576").End(xlUp).Row’该变量为当前
7、写程序的工作薄的第一张工作表中最后一行的行数 SAKsheet.Range("a2:d"&m).Copy‘复制各考场的成绩数据 ThisWorkbook.Worksheets(1).Range("a"&(SBKtemp+1)&":d"&(SBKtemp+m-1)).PasteSpecial(xlPasteValues)’粘贴到汇总表中 Application.CutCopyMode=False‘清空剪贴板中的数据 ThisWorkbook.Saved=True‘保存程序文件 SAK.Close’关闭打开的excel表5
8、EndIf SAKfile=Dir Loop EndSub 代码编写完之后,在代码窗口按F5执行程序,或点击视图→宏,执行即可。 3.2统计各分数段的人数 根据上述整合数据的结果,可以使用Frequency()函数快速统计
此文档下载收益归作者所有