如何將多個 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插件)不香嗎。想怎麼合怎麼合。
推薦閱讀: