VLOOKUP经典用法,一次性打印400份养老保险缴费清单明细单
总表
模板,已经设置了VLOOKUP,将各种金额引用好了。这是其中一个单元格的公式,其他单元格也是VLOOKUP就不逐一截图。
=VLOOKUP($E$2,总表!$B$5:$M$9,2,FALSE)
下面是VIP学员根据领导的要求,进行沟通和解决的过程。
刚开始,领导是希望点哪个人,就打印哪个人,也就是在总表后面搞一大堆打印按钮。
卢子看完觉得这种思路不太靠谱,于是建议,直接在模板做一个下拉菜单,这样想打印谁就打印谁,操作更简单。
点数据,数据验证,序列,来源引用总表的人员区域,确定。
这样就可以直接选择想打印的人员。
后来,她又提出,公司有400多人,有没办法批量打印,这样一个个选太麻烦了。
卢子看到这里,第一反应就是用VBA一次性生成400多张表,再打印。生成分表效果如动画。
生成分表的源代码:
Sub 生成分表()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For x = Sheets.Count To 3 Step -1
Sheets(x).Delete
Next
With Sheets(1)
For x = 5 To .Cells(Rows.Count, 2).End(3).Row
Sheets("模板").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = .Cells(x, 2)
[E2] = .Cells(x, 2)
Next
.Select
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
后来,卢子觉得如果只是打印的话,直接在一个表打印就行,没必要生成一大堆表。
在表格右边空白区域,写上开始、结束数字,比如要打印1-3这3个人。
然后根据匹配值,查找对应的姓名。
=VLOOKUP($I$3,总表!$A$5:$M$9,2,FALSE)
匹配值就相当于总表的序号,也就是根据序号查找B列的姓名。
处理完,就可以用新的VBA代码一次性打印。卢子的电脑没安装打印机,就以打印1页PDF为例演示。
比如我现在只想打印第5个人,开始就输入5,结束也输入5,点批量打印。
打印后的效果大概是这样。
打印的源代码:
Sub 打印()
Dim i
i = [K2]
For i = [K2] To [K3]
[I3] = i
ActiveSheet.PrintOut
Next
End Sub
最后,用这种方法,需要添加打印区域,要不然右边无关的内容也会打印出来。选择要打印的区域,点页面布局,打印区域,设置打印区域。
在实际工作中,往往是考察你的综合运用能力,需要掌握非常多知识才行。
你遇到过类似的批量打印吗,用的是什么方法?
作者:卢子,清华畅销书作者,《Excel效率手册 早做完,不加班》系列丛书创始人,个人公众号:Excel不加班(ID:Excelbujiaban)