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