求一个宏,目前需要将指定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 = 1

While 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.Description

End 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插件)不香吗。想怎么合怎么合。


推荐阅读:
相关文章