ARTICLE · 1184898
学生成绩单怎么批量制作?Excel自动查询成绩,打印一人一张
每逢期中考试和期末考试,老师比较头疼的一项工作,就是给学生做个人成绩单。
一个班有50名学生,每个学生的姓名、学号,以及语文、数学、英语的分数都不一样。如果一份一份填写,再分别打印出来,不但需要花不少时间,还可能把学生的成绩填错。
其实这件事可以用Excel来完成。先做一张全班学生的成绩总表,再建立一张个人成绩单模板,就能够根据学号自动找到学生成绩。再使用一段简单的VBA代码,还可以一次打印全班的成绩单,每名学生一张,不用来回修改。
下面按照步骤来看一下怎么操作。
第一步:建立学生成绩总表
先打开Excel,新建一个工作簿,把第一个工作表的名称改为“成绩总表”。
从A列开始,按照顺序填写下面这些表头:
假设这个班有50名学生,相关数据填写在第2行到第51行。
其中,语文、数学、英语三门课的成绩由老师自己输入,另外几项成绩可以交给公式计算。
在G2单元格输入:
=SUM(D2:F2)
这个公式用来算出三门学科的总分。
在H2单元格输入:
=ROUND(AVERAGE(D2:F2),1)
这个公式用于计算平均分,结果保留一位小数。
在I2单元格输入:
=RANK.EQ(G2,$G$2:$G$51,0)
这个公式按照总分给学生排班级名次,总分最高的学生排在第一名。
选中G2至I2,再向下填充到第51行,全班学生的总分、平均分和排名就会一起计算出来。
需要注意,这个排名公式适用于总表只记录一个班级的情况。如果总表里有好几个班,就需要按班级分别计算排名。
第二步:制作个人成绩单模板
完成成绩总表以后,点击工作表下方的“+”,再新建一个工作表,把它命名为“个人成绩单”。
先选中A1到D1单元格,点击“合并后居中”,填写“学生个人成绩单”。
然后在A列按顺序写入:
A2:学号
A3:姓名
A4:班级
A5:语文
A6:数学
A7:英语
A8:总分
A9:平均分
A10:班级排名
旁边的B列,用来显示每个学生对应的信息。
这里的B2是填写学号的地方。以后只要换掉B2中的学号,下面显示的成绩就会跟着更新。
第三步:输入公式,自动查询学生成绩
接下来这一步,是整篇教程最需要注意的部分。
假设在B2里填写学生学号240101,现在要让Excel自己查出这名学生的姓名。
在B3输入下面的公式:
=XLOOKUP($B$2,成绩总表!$A$2:$A$51,成绩总表!$B$2:$B$51,"未找到")
按回车以后,Excel就会根据这个学号,到成绩总表里找到相应的学生姓名。
接着查询语文分数。
在B5输入:
=XLOOKUP($B$2,成绩总表!$A$2:$A$51,成绩总表!$D$2:$D$51,"未找到")
数学、英语和总分等内容,也可以照着这个办法查询,只需要把公式中返回数据的列分别换成E列、F列、G列等对应列。
比如,查总分就返回G列的数据;查排名就返回I列的数据。
这些公式都设置好以后,可以先试着检查一下。
把B2里的学号换成另一名学生的学号,看看姓名、班级和每门学科的成绩会不会自动改变。
如果都能正常显示,就说明自动查询这一步已经设置好了。
还有一点要留意,两张表里的学号格式需要保持一致,不能一张表使用文本格式,另一张表使用数字格式。
第四步:设置成绩单打印格式
现在个人成绩单已经可以自动查成绩了,接下来要把打印页面设置好。
打开“个人成绩单”工作表,选中A1到D14这一块区域。
点击“页面布局”,找到“打印区域”,然后选择“设置打印区域”。
接着按下面的要求进行设置:
纸张大小选A4。
页面方向选纵向。
缩放调整为宽1页、高1页。
根据页面情况调整行高、列宽和字号。
给表格添加边框,让成绩单内容更加清楚。
设置好后,按Ctrl+P打开打印预览,看看整张成绩单是不是完整地放在一页纸上。
这里还可以在成绩单下方留出教师评语和班主任签名的位置,方便以后使用。
第五步:全班成绩单自动批量打印
虽然前面已经可以自动查询成绩了,但如果全班有50名学生,还要一个个更换学号再打印,操作起来依然比较费事。
如果想把全班的成绩单一次打印出来,可以使用Excel里的VBA功能。
先把工作簿另存为“.xlsm”格式。
随后按Alt+F11,打开VBA编辑器。
点击“插入”里的“模块”,再把下面的代码复制进去:
Sub 批量打印成绩单()
Dim i As Long
Dim ws As Worksheet
Dim card As Worksheet
Set ws = Sheets("成绩总表")
Set card = Sheets("个人成绩单")
For i = 2 To ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
If ws.Cells(i, 1).Value <> "" Then
card.Range("B2").Value = ws.Cells(i, 1).Value
card.Calculate
card.PrintOut Copies:=1
End If
Next i
MsgBox "成绩单已发送到打印队列!"
End Sub保存以后回到Excel,按Alt+F8,选中“批量打印成绩单”,再点击运行。
Excel会依次读取成绩总表里的学号,每读到一个学号,就切换到这名学生的个人成绩单,并发送一份打印任务。
如果名单里有50名学生,程序就会依次发送50份成绩单,不需要老师每次都手动换学号。
特别提醒: 运行之前,先检查打印区域是不是只有一张成绩单,同时确认默认打印机已经设置好。最好先用3名模拟学生的数据试打印,以免一次打印出错,浪费纸张。
这个功能需要在支持VBA的Excel桌面版中操作,Excel网页版无法直接运行上面这段代码。
第六步:以后考试还能重复使用
这份表格还有一个实用的地方,就是下一次考试不需要全部重新制作。
等到下次考试,只要复制这个工作簿,再把成绩总表里的考试分数更新一下,个人成绩单就会查询到新的成绩。
如果姓名、学号、班级这些信息没有变化,就可以继续使用原来的内容。
主要需要修改的,是每门学科的分数,还有考试名称和考试时间。
当然,正式打印以前,还要检查有没有缺考、成绩空白、学号重复等问题,避免成绩单出错。学生的真实成绩也是需要保护的信息,不建议随便公开分享带有姓名和分数的工作簿。
对于经常要做学生成绩单的班主任来说,先花一些时间把Excel模板建立好,后面每次考试都可以继续用。
从统计分数、查询个人成绩,再到批量打印,都可以使用同一份成绩数据来完成,能减少不少重复填写的工作。















































































