作者:音子,微信公众号:自在不思量,转载请注明出处。
上一篇介绍了如何使用VBA代码来合并同一文件夹下的所有工作簿,欲知详情,请点击下方链接:
这一篇来介绍如何使用VBA代码合并一个工作簿内的所有sheet 。
依然要强调一句,对于不打算研究学习VBA的人来说,下面介绍的这种方式只需要会用就可以了,不懂VBA语句、不懂原理并不妨碍我们使用它来提高我们的工作效率。
先看一下完整代码。需要注意的是,下方这段代码的用途是合并当前工作簿下的所有工作表:
1 Sub 合并当前工作簿下的所有工作表() 2 3 Application.ScreenUpdating = False 4 For j = 1 To Sheets.Count 5 If Sheets(j).Name <> ActiveSheet.Name Then 6 X = Range("A65536").End(xlUp).Row + 1 7 Sheets(j).UsedRange.Copy Cells(X, 1) 8 End If 9 Next 10 Range("B1").Select 11 Application.ScreenUpdating = True 12 MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示" 13 14 End Sub
下面我举个例子来说明一下这段代码要如何使用。
假设你要收集所有班级的比赛项目报名信息,以班级为单位上交报名表。
每个班级的表格形式如下:
所有班级的报名表在同一个工作簿中:
在当前工作簿中新建一个sheet:
鼠标右键点击底部工作表名称“sheet1”,在弹出的菜单中选择【查看代码】:
弹出VBA代码编辑窗口,默认状态是这样的:
将本文一开始展示的整段完整代码复制过来,并单击菜单栏中“▷”按钮运行:
代码运行完毕后,弹出如下提示窗口,表示已经合并成功:
点击确定后,直接关闭代码编辑窗口即可。
合并后的表格内容如下所示:
可以看出来,这段代码适合于待合并的各个表格中所有列的数据一致但不含有列名的情况。
像本文中举例这种情况,合并后再简单处理下就好了。首先,删除第一行空白行,然后将所有含列名的行筛选出来一次性删除:
完成~
本文【合并当前工作簿下所有sheet】代码分享地址
链接:
https://pan.baidu.com/s/1qapiS-KovewfUFn_nK0SsQ
提取码:
orpj
----------------- End -----------------
可能对你有帮助




