Excel制作另类“邮件合并”
抛弃传统的邮件合并方法,用另类方法制作一个高效的邮件合并,可以大大提高工作效率。由于工作关系,经常用到Word中邮件合并功能打印:奖状、证书、准考证等等不计其数,发现Word中邮件合并功能虽然不少,可是有些东西,用Word中邮件合并功能虽然也能实现,但工作量却多了不少,用起来很不方便。如果科目随时变化,每变换一次,就得重新设计一次Word邮件合并(即科目一列得重新录入、成绩引用也要重新插入)。
下面以打印学生成绩为例,介绍一种直接用Excel 2000制作另类“邮件合并”的方法。虽然开始设计时得花点时间,可是一次设计好后,在以后应用中只需稍作改动,就能完成任务,可大大减少时间及工作量。
一、准备工作
首先,用Excel 2000建一个Excel文件(命名为:成绩打印模板.xls),并把其Sheet1重命名为“成绩”,主要用来存放要打印的数据源(这里用科目1、2……来代替各科目名称)(图2),把Sheet2重命名为“打印用”,主要用来将科目及成绩套打在毕业生推荐表上(图1)。
01
02
在这里“成绩”这个工作表几乎不用怎么设计了,因为学生成绩数据是现成的(与数据源一样),要打印哪个班或某个学生的成绩,从现有的数据源表里筛选出来后,将其用全选(Ctrl+A)复制,然后到“成绩” 工作表里选中A1单元格,粘贴上去即可。因为在设计这个模板时,是按所有学生所学的最多科目数来设计的,只有用全选复制,粘贴到“成绩”工作表里才能覆盖原“成绩”工作表里所有的信息,打印时才不会将多余的东西打印出来。
其次,是“打印用”工作表,表格的设计及调整。主要目的是根据毕业生推荐表的要求,设计好要套打的内容,本列要套打的内容是“科目”及“成绩”两部分,其余内容为打印作辅助用。在这里设置套打问题不作说明,电子表格有选择“打印区域”功能不难做到。
二、数据引用
第一步:科目的引用
在“打印用”工作表选中B5单元格输入下面的公式:=IF(INDIRECT(ADDRESS(1,ROW($A4),,,"成绩"))"",INDIRECT(ADDRESS(1,ROW($A4),,,"成绩")),""),按下Enter后,得到图1所示的第一个科目“科目1”,最后将B5单元格公式向下填充到最后B10,得到第一列科目。第二列科目开头D5单元格的公式直接把上面的公式复制过来,并把公式中的ROW($A4)改为ROW($A10),最后将D5单元格公式向下填充到最后D10,得到第二列科目。采用同样的方法,再设置其余各列科目。
第二步:分数的引用
首先,在“打印用”工作表中的M1单元格输入“序号”、在N1单元格“姓名”,在M2单元格输入公式=IF(成绩!A2"",成绩!A2,"")并将其公式向下填充到M6,引用“成绩”工作表中的序号过来,在N2单元格输入公式=IF(成绩!B2"",成绩!B2,"")并将其公式向下填充到N6引用“成绩”工作表中的“姓名”过来。
其次,在“打印用”工作表中的G1单元格输入“序号:”,在“打印用”工作表B2单元格输入“姓名:”,在C2单元格输入公式:=INDEX($N:$N,MATCH($H$2,$M:$M,0)):INDEX($N:$N,MAX(IF(LOOKUP(ROW($N$2:$N$6),IF($M$2:$M$6"",ROW($M$2:$M$6)), $M$2:$M$6)=$H$2,ROW($M$2:$M$6)))) 然后按Ctrl+Shift+Enter组合键锁定数组公式,Excel将在公式两边自动加上大括号“{}”。注意:不要自己输入大括号。接下来还在“打印用”工作表中选中C5单元格输入下面的公式:=INDEX(成绩!D:D,SMALL(IF(ISNUMBER(FIND($C$2,成绩!$B$2:$B$6)),ROW(成绩!$A$2:$A$6),65536),ROW(1:1)))&""然后按Ctrl+Shift+Enter组合键锁定数组公式。即可得到C5单元格所要显示的“分数”。同理在C6单元格复制上面公式进来,并修改公式中的“成绩!D:D”为“成绩!E:E”,即可得到C6单元格所要显示的“分数”。
采用同样的方法,再设置其余各列成绩。
三、设置微调项按钮
设置微调序号的按钮,可以通过点击“微调序号”按钮,选择数据源中要打印的某个学生的成绩,让其显示在“科目及成绩”的表格中,就可以查看及打印。
设置方法:执行“视图→工具栏→窗体”,从“窗体”中,选择“微调项”,拖出一个“微调项”按钮来,如图中所示“微调序号”下方那个一样。并设置“微调项”,右键选择“微调项按钮→设置控件格式→控制”,在“控制”项下面,最小值设为1,单元格链接选择$H$2,其他为默认,按“确定”即可。
四、设置批量打印功能
在K8单元格输入“开始序号”,K9单元格输入“结束序号”,再选中L8单元格设置其“有效性”,选择菜单命令“数据→有效性→设置”,在其“设置”项下方,“充许”选择“序列”,“来源”选择=$M$2:$M$6。同理设置L9单元格“有效性”。
03
04
编写宏命令,在“打印用”工作表里,执行菜单“工具→宏→宏→宏名”,输入“批量打印”,“位置”选择“当前工作溥”,点击“创建”,把下面的代码写进去即可。
宏代码:
Sub 批量打印()
Application.ScreenUpdating = False
Dim a As Integer, b As Integer, i As Integer
a = Range("L8").Value ‘设置批量打印的开始序号
b = Range("L9").Value ‘设置批量打印的结束序号
If b
页:
[1]