求一個宏,目前需要將指定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插件)不香嗎。想怎麼合怎麼合。


推薦閱讀:
相关文章