每学期结束时,老师需要给每个学生的家长发一份通知,包括学生的成绩和评语。以前我们都是手工填写或者打印,要繁琐的对学生的成绩进行排名和录入。其实利用Excel的一些功能和作用,可以对学生的成绩进行排名,实现批量打印通知书。这里就以某校期末通知书的打印为例,介绍一下具体的实现方法。
整理成绩以及评语表
通常一份标准的家长通知书,一般都需要包括学生成绩以及老师的评语,因此在打印通知书之前,必须将这些资料整理好,启动Excel2007,新建一个工作薄,将其予以命名,比如“2009年度通知书打印”,在其中新建一个工作表,将其命名为“学生成绩明细”,在此表中将各个学生的成绩复制过来,由于还需要对学生成绩进行合计、排名,因此在“总分”下面的I2单元格中输入求总分公式“=SUM(B2:H2)”,在“排名”下面的J2单元格中输入公式 “=”第”&RANK(I2,$I$2:$I$71)&”名””,然后将这两个公式复制对应的下面单元格区域中,就可以求出所有学生的总分以及在本班级中的排名了(图1)。
图1
此外由于通知书中还需要添加老师的评语,因此新建一个工作表,将其命名为“老师评语”,然后在此表的A列中将学生成绩明细中的学生名单复制过来,然后在B列中输入老师对每个学生的评语(图2)。
图2
设计通知书打印模板
虽然每个学校的家长通知书格式可能不尽完全相同,但是大体上是差不多的,新建一个工作表,将其命名为“批量打印通知书”,然后在此表的A2:K24单元格区域中,根据自己学校的要求,输入家长通知书的必要内容,如标题、开头语、成绩表格、评语表格以及家长填写意见的位置(图3)。
图3
由于要实现批量打印,必须在此通知书模板中添加一个通知书序号选择单元格,这样就能够通过这个单元格中的不同序号,从而能够显示不同的家长通知书,在 L3单元格中输入“请输入序号”,然后确定M3单元格为通知书序号选项单元格。同时为了将前面学生成绩明细中每个学生的数据自动引用过来,在通知书中学生成绩明细表“学生姓名”下面的A12中输入公式“=OFFSET(学生成绩明细!$A$2,$M$3*1-1,0)&”””,在第1门课“语文” 下面的B12中输入公式“=VLOOKUP($A$12,学生成绩明细!$A$2:$K$60,2,0)”,在第2门课“数学”下面的B12中输入公式 “=VLOOKUP($A$12,学生成绩明细!$A$2:$K$60,3,0)”,并依次类推,然后在存放老师评语的A14中输入公式 “=VLOOKUP($A$12,老师评语!$A$2:$B$71,2,0)”。这样当在M3单元格中输入1时,就会在通知书模板中显示第1个学生的家长通知书,而2时,则显示第2个学生的家长通知书。
需要注意的是,此处使用了OFFSET、VLOOKUP等函数,其作用为根据M3单元格中的数值,而自动引用学生成绩明细对应的学生姓名,而且在成绩表以及评语中自动引用相应学生的成绩以及评语资料,而公式“OFFSET(学生成绩明细!$A$2,$M$3*1-1,0)&”””中的$M$3*1则是针对不同数据之间相隔行数而定的,如果相隔2行,则将其修改为$M$3*2即可。
利用控件,高效率批量打印通知书
在前面通知书模板设计的基础上,就可以利用控件进行批量打印通知书的工作了,在N2、N3中分别输入开始序号、结束序号,以其后面的O2、O3单元格作为批量打印通知书的起始序号,接着单击“开发工具”菜单,单击“控件”功能区中的“插入”选项,在弹出的控件列表中,选择“ActiveX控件”中的命令按钮,将其拖动到M3单元格的下面。
接着右击此按钮控件,在弹出的右键快捷菜单中,选择“属性”命令,在随之弹出的“属性”对话框中,将此按钮控件的“Caption”属性,即按钮标题修改为“批量打印通知书”。然后还是右击此按钮控件,选择“查看代码”命令,在弹出的VBA编辑窗口中输入以下批量打印命令:
Private Sub CommandButton1_Click()
For i = Range(“o2”) To Range(“o3”)
Range(“m3”) = i
ActiveSheet.PrintOut
Next
End Sub
输入完毕后,关闭此VBA编辑框,单击“控件”功能区中的“设计模式”选项,以退出设计模式,然后选择下通知书的打印区域,最后在O2、O3单元格中输入需要批量打印家长通知书的起始序号,如1~50,最后单击“批量打印通知书”按钮,就可以立即打印出所需要的所需要的50名学生通知书了。
以上的批量打印是仅仅针对通知书打印而言的,实际上利用以上方法,稍微修改下,还可以应用其他一些批量打印工作领域中,如打印标签、付款通知单、成绩单等等,通过这个方法能够大大提高工作效率,减少出现工作误差的机率。