按指定数据源表格快速复制和填充固定模板表格

按指定数据源表格快速复制和填充固定模板表格

工作中遇到一些重复性工作,想着靠一些自动化的处理方式解决,因为是表格文件,于是想到了宏,可以批量处理重复性工作,记录一些心得。

需求:按照花名册中的姓名、年龄等信息,填充指定模板的表格内容,并按姓名生成新的工作表。

先把宏代码写上吧

Sub test003()
Dim i As Long, LRow As Long
LRow = Sheets("人员名册").Cells(Rows.Count, 1).End(xlUp).Row
For i = 3 To LRow
Set md = Worksheets("人员名册")
Set mb = Worksheets("模板")
mb.Copy after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Sheets("人员名册").Cells(i, 2)
Sheets(Sheets.Count).Range("B3") = Sheets("人员名册").Cells(i, 2)
Sheets(Sheets.Count).Range("D3") = Sheets("人员名册").Cells(i, 3)
Next
Sheets("人员名册").Select 
End Sub

简单解释一下,先定义一个函数test003,再定义两个长整型变量 i 和LRow,i为了函数循环和单元格定位,LRow是为了取花名册的行数。

LRow = Sheets("人员名册").Cells(Rows.Count, 1).End(xlUp).Row

这行的意思就是取“人员名册”这个sheet中的总行数,这样就可以计算需要生成多少张模板表格了。

For i = 3 To LRow

然后进入循环,先给变量 i 赋一个初始值,意味着从第几行开始读取数据,因为一般表格都会有标题啥的嘛,所以,实际上这里i是从第3行开始才是花名册的姓名开始的行数,循环到最后一行。

Set md = Worksheets("人员名册")
Set mb = Worksheets("模板")

这两行是设置两个变量md 、mb并把人员名册和模板这两个sheet分别赋值给它们。

mb.Copy after:=Sheets(Sheets.Count)

复制mb(模板),放在最后一张表之后。

Sheets(Sheets.Count).Name = Sheets("人员名册").Cells(i, 2)

复制后的表的命名按照人员名称中的第 i 行第2列进行,这里 i 是实际上姓名开始的行。第 i 行第2列就是花名册表中的第一个姓名的单元格定位。

Sheets(Sheets.Count).Range("B3") = Sheets("人员名册").Cells(i, 2)

这里就是填充模板表中内容的代码了,模板表中的B3单元格用人员名册中的第 i 行第2列填充。要填写多个数据的话,可以新增多行,这里就按照实际需求更改就好了。

Next

循环结束

Sheets("人员名册").Select 
End Sub

回到人员名称工作表

理解了这些宏代码,以后遇到批量复制表格,批量填充表格这些问题基本就可以迎刃而解了。

附:excle中默认是关闭宏功能的,因为宏可以干的事情太多了,有些宏是打开文档即可运行的,运行了恶意的宏那后果还是很严重的,所以建议大家在确保安全的前提下开启宏功能,运行宏代码。

excle宏代码窗口的快捷键是alt+F11。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值