前言
在日常工作过程中,我们有可能需要把多个Excel工作簿的内容汇总到一张Excel工作表中。如果通过复制粘贴的方式也并不是不可行,只是会浪费大量的时间和人力。在这样的情况下,我们一起讨论一种可以比较方便和快捷的进行多个工作簿合并成一个工作表的工作。这样我们可以分成两步去操作:首先:多个工作簿合并到一个“汇总工作簿”;其次:将这个“汇总工作簿”中的工作表进行合并,合并成一个工作表
第一步:多个工作簿合并到一个工作簿
在由多个工作簿合并到一个工作表之前,我们先把多个工作簿合并到一个工作簿。
1、新建一个工作薄,将其命名为合并后的名字,例如叫做:汇总工作簿。
2、打开此工作簿:“汇总工作簿”
3、在“汇总工作簿”下任一个工作表标签上点击右键,选择“查看代码”。
4、在打开的VBA编辑窗口中粘贴以下代码:
Sub 工作薄间工作表合并()
Dim FileOpen
Dim X As Integer
Application.ScreenUpdating = False
FileOpen = Application.GetOpenFilename(FileFilter:="Microsoft Excel文件(.xlsx),.xlsx", MultiSelect:=True, Title:="合并工作薄")
X = 1
While X <= UBound(FileOpen)
Workbooks.Open Filename:=FileOpen(X)
Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
X = X + 1
Wend
ExitHandler:
Application.ScreenUpdating = True
Exit Sub
errhadler:
MsgBox Err.Description
End Sub
5、关闭该VBA编辑窗口
6、在Excel中,开发工具---宏,选“工作薄间工作表合并”,然后“执行”。
7、在打开的对话窗口中,选择你要合并的多个工作薄。
8、等待运行。而后就OK了。
9、打开名为“汇总工作簿”的Excel文件,我们就能看到多个其他工作簿以多个Sheet页的形式合并到了这一个工作簿中。
第二步:多个工作表合成一个工作表
在“汇总工作簿”工作簿中,有很多个Sheet页,我们的最终目的是把这多个Sheet页合并到一个Sheet页的多行。其操作办法如下:
1、在“汇总工作簿”中,新建一个sheet页。
2、在新建的sheet标签上单击右键,选择“查看代码”
3、在打开的VBA编辑窗口中粘贴以下代码:
Sub 合并当前工作簿下的所有工作表()
Application.ScreenUpdating = False
For j = 1 To Sheets.Count
If Sheets(j).Name <> ActiveSheet.Name Then
X = Range("A65536").End(xlUp).Row + 1
Sheets(j).UsedRange.Copy Cells(X, 1)
End If
Next
Range("B1").Select
Application.ScreenUpdating = True
MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示"
End Sub
4、关闭该VBA编辑窗口
5、在Excel中,开发工具---宏,选“合并当前工作簿下的所有工作表”,然后“执行”。
6、等待运行,而后就OK了。
结语
我们上面提到的是如何使用VBA来实现多个工作簿合成一个工作簿以及一个工作簿中的多个工作表按行合并。
上面的方法是在知乎上摘录的,
提姆葉提供了工作簿的合并;
Anson提供了同一个工作簿中的工作表按行合并的方法。
另外,我还在知乎上看到一个办法,就是雷公子提供的用PowerQuery动态汇总文件夹下的多个Excel文件。链接如下:https://zhuanlan.zhihu.com/p/26164792 。但是由于我个人并没有尝试过使用PowerQuery去进行合并,所以并不清楚这个效果如何。
总之这里是一个解决方法的汇总,如果有和我一样有类似需求的小伙伴,可以尝试用这边的方法去解决这个问题。
以上~