首页 > 范文大全 > 正文

利用VBA汇总成绩表

开篇:润墨网以专业的文秘视角,为您筛选了一篇利用VBA汇总成绩表范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:利用vba语句来操作excel文档,将格式统一的成绩登记表汇总,降低了工作强度,能按时保质地完成工作任务。

关键词:VBA;excel;汇总;成绩表

中图分类号:TP311.1 文献标识码:A 文章编号:1009-3044(2011)31-0000-00

Gathering the Result Table Using VBA

MAO Zhan-jun

(Freshman Education Department of YangtZe University, JingZhou 434023, China)

Abstract: Operates the excel documents using the VBA sentence, will gather the result table in unified format, reduce the intensity of the work, complete tasks on time and high quality.

Key words: VBA; excel; gathering; result table

在课程考试结束后,按要求将试卷密封进行流水阅卷。阅卷完毕后,还要组织各阅卷教师按要求将每一位学生试卷的小题得分输入成绩表。如图1。每位教师负责一部分班级成绩的录入,在收集完各位教师录入的成绩表后,由于录入的地点与时间不一定统一,也不一定是按总表的学生次序录入,故不能简单的按共享工作簿的方式来进行汇总,需要进行人工汇总。由于在以往录入成绩的过程中,曾经出现过在发放的excel表格中没有登记需录入成绩的学生信息的情况。在汇总时,就需要对比学生的信息,逐班录入,边汇总,边复核,当涉及的学生多达数千人时,工作量就显得格外巨大,录入的数据也不能保证无误,还要组织人员反复复核数据。为了能更好地完成成绩汇总工作,可以利用VBA语句,在excel表中调用宏自动地完成汇总工作,既可以减少工作量,又可以保证数据的准确性。

图1 汇总样表

1 系统分析

由于发放给各位教师的成绩登记表是格式统一的excel表格,理论上是应含有参加本课程考试的所有学生的信息的,但由于每次学生信息变动更新的不及时及考试中出现的其他情况,在各位教师录入成绩时,总有可能存在漏登信息及缺考、缓考的学生,甚至可能存在违纪的学生。在汇总成绩时,需要将漏登信息的学生的信息及成绩补充到汇总表中,并对缺考、缓考、违纪的学生进行备注.为了方便操作,将收集到的各教师录入的成绩文件(*.xls)放置在同一个文件夹中(如:D:\1)。在excel工作表中通过VBA语句使用由excel对象模型所提供的对象的方法和属性来操作excel文档,由于学生的学号具有唯一性,利用VBA语句逐个打开指定文件夹下的*.xls文件,通过匹配学生的学号来确定学生信息在汇总表中的位置,并按要求将匹配学生的成绩数据拷贝到汇总表中指定的单元格内。若在汇总表中不能发现匹配的学号,那就说明,在汇总表中不含有该学生的信息,这时,需要将该学生的信息与成绩数据补充到汇总表中数据区的下方。

图2 选择文件夹

2 程序编码

2.1 创建对象,打开指定的文件夹

利用CreateObject[1]命令创建一个对象,利用BrowseForFolder[2]命令可以在对话框中选择放置文件的文件夹,如图2。

Set duixiang = CreateObject("Shell.Application")

'创建一个对象

Set wenjianjia = duixiang.BrowseForFolder(0, "", 0, "") '选择文件夹

2.2 获取文件路径与文件名

通过所选择的文件夹,利用object.Items[3]获得所选择的文件夹路径,利用dir命令获取储存在文件夹中的文件的文件名:

If Not wenjianjia Is Nothing Then

'如果寻获所选择的文件夹

wenjianlujing = wenjianjia.Items.Item.Path

'获取所选择的文件夹的路径

End If

yuanwenjian = Dir(wenjianlujing & "\" & "*.xls")[4]

'获取所选择的文件夹下的文件的文件名(如:教师甲.xls)

2.3 逐个打开文件,进行学生信息的匹配及成绩的汇总

利用do while……loop语句循环,逐个打开指定文件夹下的*.xls文件,从中读取学生信息,并利用读取的信息与汇总表中的信息是否匹配来判断学生信息是否属于漏登信息的情况,将相匹配的学生成绩数据拷贝粘贴到汇总表中相应的单元格内,并将漏登学生的信息及成绩数据补充到汇总表数据区的下方,并对缺考、缓考、违纪的学生进行备注。

Do While yuanwenjian ""

'停止循环的判断条件(没有找到新的文件)

Set ak = Workbooks.Open(wenjianlujing & "\" & yuanwenjian)

'打开文件

a = Workbooks("汇总表.xls").Sheets(1). UsedRange.Rows.Count[5]

'获取汇总表中数据区的行数

b = Workbooks(yuanwenjian).Sheets(1). UsedRange.Rows.Count[5]

'获取打开文件中数据区的行数

For i = 2 To b

'利用循环语句从所打开的文件中读取学生信息

pipei1 = 0

'设置学生信息匹配的次数

If Workbooks(yuanwenjian).Sheets(1).Range("e" & i).Value "" Or Workbooks(yuanwenjian).Sheets(1).

Range("m" & i).Value "" Then

'如果所打开的文件的第i行中已经输入成绩(单元格"e" & i非空)或已经进行备注(单元格"m" & i非空)

a = Workbooks("汇总表.xls").Sheets(1).UsedRange.Rows.Count[5]

'先获取汇总表中数据区的行数

For j = 2 To a

'利用循环语句在汇总表中匹配学生信息

If Workbooks("汇总表.xls").Sheets(1).Range("c" & j).Value = Workbooks(yuanwenjian).Sheets(1).Range("c" & i).Value Then

'利用汇总表中第j行的学号与所打开的文件中第i行的学号的是否相同来匹配学生信息

pipei1 = 1

'匹配的次数为1