每次考试结束后,学校教务部门都需要汇总和分析各班提交的成绩。由于各班成绩表单独提交,如何高效合并所有班级的成绩到一张工作表上,以便后续数据处理,是一个常见问题。传统方法是通过复制粘贴,但班级数量多时,操作繁琐且易出错。本文介绍一种使用VBA编程实现自动合并的方法,可显著提高效率。
假设将所有考生的成绩合并到Sheet1中。首先,在当前工作表中使用“控件工具箱”添加一个命令按钮,命名为“合并成绩”(如图所示)。双击按钮,在其Click事件中输入以下VBA代码:
Private Sub CommandButton1_Click()
' 统计要合并的工作表数量(循环次数)
For i = 2 To Sheets.Count
Worksheets(i).Select
' 选择各工作表中的数据区域并复制
irow = Worksheets(i).[B65536].End(xlUp).Row
ActiveSheet.Range("A2:AA" & irow).Select
Selection.Copy
' 粘贴到第一张工作表中
Worksheets(1).Select
mrow = [a65536].End(xlUp).Row + 1
Range("A" & mrow).Select
ActiveSheet.Paste
Next i
' 主体程序执行完毕
[a1].Select
CommandButton1.Enabled = False
countall = "一共合并了" + Str([a65536].End(xlUp).Row - 1) + "个学生的成绩,数据表合并成功!"
MsgBox countall, vbOKOnly, "提示信息"
End Sub
代码中,ActiveSheet.Range("A2:AA" & irow).Select用于选择每张工作表中除第一行(标题行)以外的数据区域。循环从第2张工作表开始,依次复制数据并粘贴到Sheet1的末尾。
注意事项:在执行此操作前,需确保每张工作表的字段顺序一致,且第一行为标题行。建议事先将制作好的Excel文件通过“共享工作簿”功能分享给教师,以便统一录入格式。