qq自定义diy名片代码复制_还在复制粘贴吗?一文教你在Excel中利用VBA实现类似「邮件合并」的功能!!...

c73cb21af4d97a150381300c8e326013.png
来源:Ai叶子的效率笔记(ID:pbbaiyezi)

在之前的文章中介绍了如何用Word「邮件合并」功能批量生成文档以及用主控文档和子文档拆分「邮件合并」的文档。如有不会的可以参考这三篇文章:

手动复制粘贴?这个小技巧,3分钟搞定100份Word文档的定制和发送!​mp.weixin.qq.com
7577c03c8488dfd70b7d82097c49f9fc.png
邮件合并「下篇文章」:文档拆分就这么办!!​mp.weixin.qq.com
6e57c0624c9cc27e64b23ed9f6a9a583.png
「邮件合并」从合并到拆分的完整视频来了!!​mp.weixin.qq.com
f5e3ab08034dd9563fdbc5c298c27691.png

那么,聪明的小伙伴可能已经发现在Word中可以用「邮件合并」功能批量制作文档,那Excel怎么办呢?如果现在需要把一个有200行数据的工作表中的每一行数据都按照某一种模板生成一个新的工作表。比如要在Excel中为下面这个学生成绩表中的每个学生按统一的模板制作考试成绩表。

278421601935ae42a92feccb8916054d.png

数据和模板放在同一个工作簿中。模板的格式决定最终生成的工作表的格式。

a7ec1fb3ea96626631fb9ac791a1c623.png

案例使用Excel2010进行演示,主要思路是利用VBA宏自动复制粘贴数据,主要思路如下:

  • 计算「数据工作表」所包含的数据量 N,即本案例中学生的人数;
  • 循环复制「模板工作表」,并以「数据工作表」中学生的名字命名新复制的「模板工作表」;
  • 循环复制「数据工作表」中的内容到新复制的「模板工作表」;
  • 把每个工作表另存为工作簿。

1.工作簿和工作表的区别

一个「工作簿」是由多个「工作表」组成的。我们在工作中经常说的的Excel表格实际是「工作簿」。

19af4292e82412d2800c8fa646fe4ece.png

e1ba18a8f6c30c74d4610612e368965a.png

2.计算「数据工作表」中数据的行数N

计算「数据工作表」中数据的行数N,即获取本案例中学生的人数。

a6993f9c910ba55061bee8a588b9450d.png

首先打开「工作簿学生考试成绩表.xlsx,鼠标右键单击任意工作表标签,再点击「查看代码」打开VBA窗口,然后点击「ThisWorkbook」打开代码编辑窗口。点击菜单「插入」-「过程」,类型选择「函数」,在名称文本框内输入自定义函数名称「CopyTheData」,在编辑窗口内添加一个「函数」。代码如下:

42f192bcd963e3bd95ec73e6da79777b.png

3.复制并重命名模板工作表

通过For循环复制「模板工作表」,并以「数据工作表」中学生的名字命名新复制添加的工作表。代码如下:

46b6b4dc437c8e25b5794bb9302fddde.png

代码中有这样一句「Sheets(i + 2).Name = Sheets("数据").Cells(i + 1, 2)」需要重点理解。其中「Cells属性」非常重要,是什么意思呢?一起来看一下Excel帮助文档关于「Cells属性」的解释吧,就是代表工作表中的一个单元格。

37db9a818c73cb5bb113239586d6055e.png

在「Cells属性」后面紧接着指定的行索引和列索引:Cells(行索引,列索引)

因此「Sheets(i + 2).Name = Sheets("数据").Cells(i + 1, 2)」这句代码的意思就是:把名称为「数据」的工作表中行索引为i+1,列索引为2的单元格的内容赋值给第i+2个工作表的标签名,就是重命名工作表标签。

4.VBA复制粘贴数据

为便于调试,我们增加了一个函数「DeleteSheets」用于批量删除除「数据工作表」和「模板工作表」以外的工作表,并在「CopyTheData」中进行调用。

78ad46ec3f800ae9b2c168ab7f620b64.png

完整的「DeleteSheets」代码:

8907d55b7dcb7e09d2489ec8778677c9.png

现在需要依次把「数据工作表」中的每一行数据复制到新添加的「数据工作表」中。其中一行最关键代码为:「Sheets(i).Cells(x,y) = Sheets("数据").Cells(j, z)

意思就是把名称为「数据」的工作表中行索引为j,列索引为z的单元格的内容赋值给第i个「工作表」中行索引为x,列索引为y的单元格。在本案例中就是把数据工作表中每个学生的每一项信息复制到新添加的模板工作表中。

5501ee292643d8b137b6103538b56d63.png

复制处理数据函数「CopyTheData」的全部代码为:

545d5b5c7abd07620e10bc15ff555bdb.png

运行「CopyTheData」:

d9f1a4ce22362c5a02e1bd1e2af8a7cc.png

发现6个工作表自动复制粘贴完成,是不是速度很快!?

15cbb92774f2faec52cdf8f411eb3e6f.png

5.把每一个工作表另存为工作簿Excel文件

完成第4步后,每个学生考试成绩表都是一个工作表,如果需要把这些工作表都另存为工作簿,即保存为单独的xlsx或xls文件,该怎么办?

这里可以再添加一个函数「SplitAndSaveFiles」,并调用「CopyTheData」。

533ccd137a312f5db45d3a904d819143.png

运行「SplitAndSaveFiles」,全部自动完成,速度快而且容错率高。

26b4ae29aa38cdccc36afa17e289b77f.png

好了,关于利用VBA批量生成工作表,批量保存工作表为工作簿的技巧就分享到这里,如果你还有其他技巧,可以在文章下进行留言哦~

顺手点个赞,是一种美德。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值