工作中,有如下格式的表格,需要打印出n个员工的。员工详细数据在另外一张工作表中,那么本案例将结合函数与VBA展示综合应用的优势。
表格样式:
![v2-7b3274228f6f6859029e344421cb6126_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/629fa5d77c507c45bd7423e56d2a10f7.jpeg)
员工详细数据:
![v2-8370583ff409fc0581227b17d8d968d3_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/77478cc58fafea680c3b9889f3bd7547.jpeg)
解决思路:
第1步
在"表格样式"工作表中插入ActiveX控件:下拉列表框,数据源定位于"员工详细数据"工作表中的B列序列号,当人工选择下拉列表项时,选中的"序列号"值存在A2单元格,为防止误删除,将A列隐藏;
![v2-9d7830965b1604777391a5a758052c73_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/37e43e7d841400160e2044a6381af22f.jpeg)
因为A2单元格得到的"序列号"值是文本型的,但是数据表中的"序列号"值是数值型的,所以在A3单元格用VALUE函数做了置换:
![v2-247b6c92adb09c88e93a6ed844c18a68_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/39e336c02c2705ee4876165e57aa8207.png)
第2步
"表格样式"工作表中需要填入数据工作表中数据的地方,使用VLOOKUP函数,查找"序列号"对应的值,例如"表格样式"工作表中的”姓名 "=VLOOKUP($A$3,data,2)","性别"单元格对应的函数公式是="VLOOKUP($A$3,data,3)"。
![v2-e4567add2bf1fc580a751dac7b5a50f0_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/2c28b57df8e7f77117db681ebee722aa.jpeg)
"data"是已定义好的名称,引用的是"员工详细数据"工作表中数据区域,第一列是序列号:
![v2-516b9bc04a3e478ead928924a1da0abd_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/b46872a71d3733afbc0107d7298583ca.jpeg)
第3步
按ALT+F11快捷键进入VBA代码编辑窗口,新建一个模块,建立一个过程,命名为“打印”,指定要打印的开始-终止的"序列号",例如语句"For i = 1005 To 1006",可以根据需要随意指定员工"序列号"。
![v2-54cb171a4101a2914155f8997aa91626_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/c9018a7a1a9cbeca9813cc67a63661da.jpeg)
按F5执行"打印"宏,即可循环打印指定的"序列号"内的表格。
或者单击菜单项"开发工具"-"宏",也可执行该宏。
![v2-bee522c9b551463a06ce5f8114ae7c14_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/eb67ea7932df4f534def17160b892417.jpeg)
欲获取本案例的EXCEL文件,请关注公众号:OFFICE之门,发送”批量打印“即可。