如何将多个 Excel 工作簿的工作表合并成一个工作表?
求一个宏,目前需要将指定Excel下的指定表,汇总到一起
例如:将book1.xlsx中的sheet1,book2.xlsx中的sheet1,book3.xlsx中的sheet1,book4.xlsx中的sheet1 合并到 book_all的sheet1.详细说明:book1,book2,book3,book4,中分别含有两个sheet,其中book们的sheet2的内容是为他们的sheet1做V-lookup服务的,这个内容,4个book都一样。于是我再网上找了两个宏,是比较接近我的最终需求的,但是还是有点问题。
宏1:Sub 合并当前目录下所有工作簿的全部工作表()
Dim MyPath, MyName, AWbName
Dim Wb As Workbook, WbN As String
Dim G As Long
Dim Num As Long
Dim BOX As String
Application.ScreenUpdating = False
MyPath = ActiveWorkbook.Path
MyName = Dir(MyPath "" "*.xls")
AWbName = ActiveWorkbook.Name
Num = 0
Do While MyName & ""
If MyName & AWbName Then
Set Wb = Workbooks.Open(MyPath "" MyName)
Num = Num + 1
With Workbooks(1).ActiveSheet
.Cells(.Range("B65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)
For G = 1 To Sheets.Count
Wb.Sheets(G).UsedRange.Copy .Cells(.Range("B65536").End(xlUp).Row + 1, 1)
Next
WbN = WbN Chr(13) Wb.Name
Wb.Close False
End With
End If
MyName = Dir
Loop
Range("B1").Select
Application.ScreenUpdating = True
MsgBox "共合并了" Num "个工作薄下的全部工作表。如下:" Chr(13) WbN, vbInformation, "提示"
End Sub
这个宏的问题是,run之后,它把book1,2,3,4中的sheet1和sheet2的内容,统统合并在了bookall的sheet1中,就是说bookall的sheet1的内容变成了(book1;sheet1,book1;sheet2,book2;sheet1,book2;sheet2,。。。。。。。。。。。。book4;sheet2)。我期望的是bookall的sheet1,只需要将book们的sheet1们拿来合并即可。宏2:来自知乎Dim FileOpenDim X As IntegerApplication.ScreenUpdating = FalseFileOpen = Application.GetOpenFilename(FileFilter:="Microsoft Excel文件(*.xls),*.xls", MultiSelect:=True, Title:="合并工作薄")X = 1While X &<= UBound(FileOpen)
Workbooks.Open Filename:=FileOpen(X)Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)X = X + 1WendExitHandler:Application.ScreenUpdating = TrueExit Suberrhadler: MsgBox Err.DescriptionEnd Sub
这个宏的结果是把bookall变成了8个sheet,分别是book1234里面的sheet1和sheet2并没有合并在bookall的一个sheet里。请求各位大神,帮我解答一下,拜托了
用VBA实现。有解决问题的,不要只收藏不点赞呀!点赞点赞!
【223收藏,只有46赞什么情况???】
方法:
1、新建一个Excel工作薄,工作簿名称任你定义。
2、打开此工作薄,将其中一个Sheet重命名为"汇总"。
3、在其下任一个工作表标签上点击右键,选择「查看代码」。
4、在打开的VBA编辑窗口中粘贴以下代码:
Sub 多文件合并能够自由选择文件夹()
Dim arr()
Dim wb As Workbook
Dim sht As Worksheet
arr = Application.GetOpenFilename("Excel文件,*.xls*", 2, , , True)
Application.ScreenUpdating = False 关闭屏幕刷新
If arr(1) & "False" Then
For i = LBound(arr) To UBound(arr)
Set wb = Workbooks.Open(arr(i))
For Each sht In wb.Sheets
以下4行是壳内的命令,用于复制打开的工作簿
If InStr(sht.Name, "费用") &> 0 Then
irow = sht.Range("A65536").End(xlUp).Row
irow1 = ThisWorkbook.Sheets("汇总").Range("A65536").End(xlUp).Row + 1
sht.Range("a1:z" irow).Copy ThisWorkbook.Sheets("汇总").Range("a" irow1)
wb.Close False 关闭工作簿并且不保存
End If
Next
Next
End If
MsgBox "执行完毕!"
Application.ScreenUpdating = True 打开屏幕刷新
End Sub
5、指定要合并的Sheet。对「If InStr(sht.Name, "费用") &> 0 Then」这段代码中的"费用"修改,比如修改成"经销商",则包含「经销商」几个文字的都会纳入合并
6、关闭VBA编辑窗口。
7、在excel中,工具---宏---宏,选「合并工作簿的各个sheet到同一个sheet」,然后「执行」。
8、在打开的对话窗口中,选择你要合并的几个工作薄文件。
9、等待。。。。ok!
有解决问题的,记得点赞!点赞!点赞!
搞不定的可私信我,欢迎交流
兄弟问题:
如何将一个 Excel 工作簿中的多个工作表合并成一个工作表?
如何快速的合并多个 Excel 工作簿成为一个工作簿?
这题我会,而且有全网最标准的答案!
其实你需要的仅仅是这么一个小工具!
一键批量合并多个Excel工作簿【模板下载】?mp.weixin.qq.com超级方便,亲测可用~~
可以参考我的文章,https://zhuanlan.zhihu.com/p/144349933
基本上复制源代码,然后改一下文件路径即可。
python
pandas
pd.concate([book1.xlrx,book2.xlrx,book3.xrlx,xrlx])
直接用excel2016中的power query append功能可以解决
随便下载个表格插件就行,比如方方格子啥的。。
下载一个Power BI 用免费版. 随便找个视频学习下, 简单的要命
下个方方格子(excel插件)不香吗。想怎么合怎么合。
推荐阅读: