如何將多個Excel工作表合併到一箇中?

Tags: 資料, 程式碼,

在知道回答問題的時候,看到過很多次網友提問,如何將多個工作表合併到一個工作表中。若是工作表數量少,一個個複製貼上還能接受,但當有幾十甚至上百個表,要彙總到一個工作表中時,不僅僅是工作量的問題了,可能還會誤操作,導致資料複製貼上錯誤。

這裡給大家講解一個如何利用VBA也就是巨集命令來實現,將多個工作表合併到一箇中,並且詳細地接觸程式碼的工作原理,以方便大家舉一反三,能結合自己的實際需求,改造成自己需要的程式碼,從而達到提高工作效率和準確性的目的。

工具/原料

Office2007

方法/步驟

有多個工作表(本例中有3個,跟300個是沒有啥區別的),每個工作表的表頭是一樣的,但資料多少不一;需要把每個工作表的內容,彙總到具有同樣表頭的總表中,如下圖所示。

其中,第一幅圖為總表;第二、三、四幅圖為分表1、2、3的資料內容。

如何將多個Excel工作表合併到一箇中

如何將多個Excel工作表合併到一箇中

如何將多個Excel工作表合併到一箇中

如何將多個Excel工作表合併到一箇中

Alt+F11,VBA快捷鍵,在彈出的新介面中,左鍵雙擊座標的名為”總表“的工作表,使後續的程式碼是複製到這個工作表中。

如何將多個Excel工作表合併到一箇中

在右邊的空白區域,複製下面的程式碼,如下圖所示:

Sub main()

For Each sh In Sheets

If sh.Name <> "總表" Then

i = sh.Range("D65536").End(3).Row

k = Range("A65536").End(3).Row

sh.Range("A2:D" & i).Copy Range("A" & k + 1)

End If

Next

End Sub

如何將多個Excel工作表合併到一箇中

程式碼詳解:

1.Sub main()——其中Sub 跟括號是固定的,main是巨集名,可以隨便更改(其實完全沒有必要多此一舉,這裡可以不做任何修改)

2.For Each sh In Sheets——這是遍歷全部的工作表,這裡就要注意,如果你的工作表中包含一些,不需要彙總資料的工作表,那麼就需要將源資料表備份一份,然後將不需要彙總資料的工作表都刪除掉,只剩下總表以及需要彙總資料的工作表(當然,還有其他辦法,這裡只講解最簡單地做法)

3.If sh.Name <> "總表" Then——這裡是判斷工作表的名字是不是”總表“,如果是總表,就不彙總資料,本例中總表的名字就是”總表“,如果你的工作表中,總表名字是其他的,就將這裡的”總表“改為你的工作總表明細;

4.i = sh.Range("D65536").End(3).Row——這裡要注意了"D65536",是為了獲得最後一個不為空的行的行號,這裡用了D列,因為本例中的D列是有資料的,在實際的使用過程中,一定要選擇一個最後一行有資料的列,否則不能獲得最大行號(假如只有2列,那麼這裡的D可以改為B或者A)

5.k = Range("A65536").End(3).Row——這裡是獲得總表的最大行號,以便複製的資料,能夠依次往下貼上;(這裡的A65536跟上面提到的是一個道理,總表中的A列最後一行不是空的)

6.sh.Range("A2:D" & i).Copy Range("A" & k + 1)——這裡要注意“A2:D”&i是要複製的區域,因為本例中只有A-D列,而且資料是從第2行開始的,所以這裡是A2:D,那假如是從E列第10行開始,到Z列結束的區域,就應該改為E10:Z;

Range("A" & k + 1)——這裡是從總表的A列開始貼上,假如是從D列開始,那麼這裡的A改為D即可

7.End If Next End Sub——這些是結束判斷、繼續迴圈和程式結束,都不需要更改。

執行程式碼方式很多,這裡介紹三種:

1.是點選下圖中所示的三角號,執行程式碼;

2.是還是在Alt+F11開啟的介面中按F5,執行程式碼;

如何將多個Excel工作表合併到一箇中

還有一種,是關閉程式碼介面,然後按Alt+F8,在新對話方塊中,選擇名為main的巨集,然後點選執行。

如何將多個Excel工作表合併到一箇中

執行結束,就可以看到所有的工作表內容,都彙總到總表中來了。

如何將多個Excel工作表合併到一箇中

注意事項

自行修改程式碼的時候,可以多做幾次嘗試,就更清楚每個程式碼是什麼意思啦;但是在執行程式碼之前,請務必先備份資料,一旦執行了程式碼,資料是無法用Ctrl+Z來恢復的喲

不用擔心關閉VBA介面,程式碼儲存的問題;其中的程式碼是跟工作表一起的,也就是說,工作表沒有關閉,程式碼就不會消失;這也就意味著,儲存工作表時,如果需要儲存程式碼,注意儲存

Excel2007格式xlsx檔案,是不帶程式碼的,如果需要連程式碼一起儲存,要儲存為97-2003格式xls或者xlsm格式

相關問題答案