vba把多個表彙總到一起(vba彙總多個工作表指定區域)
一、情況
某公司有全國不同城市的人員銷售資料,該資料為員工姓名、工號、銷售數量以及銷售金額,每一個城市一個工作表,年底了,老闆叫你,把全國的資料按不同城市的銷售資料都彙總到一個表格中,方便查閱分析。
全國不同城市的銷售資料
二、最終效果
在一個彙總的工作表中,表頭為城市、銷售數量和銷售金額,彙總資料分別按每一個sheet的合計數來彙總,在城市這一列中分別為每一個工作表的名稱,如北京,銷售數量、銷售金額為工作表名稱為北京的銷售數量、銷售金額的合計數
最終資料彙總效果圖
三、思路分析
①首先對資料表進行特徵分析,其存在的特徵如下:
1.表頭一致:都是城市、銷售數量、銷售金額
2.最後一行為合計行:銷售數量和銷售金額的合計數在最後一行
3.每個工作表的資料行數不一樣
②彙總方法選擇
傳統的Excel技巧和函式已經不能夠滿足本次彙總的需要,複製貼上不用想,效率低下,且工作量大;如果要追求效率,應該選擇VBA程式設計方法!
③程式設計思路分析
1.“城市”列:為工作表名稱,用for迴圈然後呼叫sheet.name即可
2.“銷售數量”/“銷售金額”列:獲取合計數,也就是該列的最後一個非空單元格,可以運用Range("C65536").End(xlUp)方式
四、教程方法
1.開啟上述表格,新建一個名稱為“彙總”的工作表作為彙總
2.快捷鍵Alt F11開啟VBA編輯器
3.插入—模組—複製如下程式碼—執行程式碼
Sub 一鍵彙總資料() Dim i, x As Integer For i = 2 To Sheets.Count Cells(i, 1) = Sheets(i).Name x = Sheets(i).Range("C65536").End(xlUp).Row Cells(i, 2) = Sheets(i).Cells(x, 3) Cells(i, 3) = Sheets(i).Cells(x, 4) Next End Sub
五、程式碼解釋
Dim i, x As Integer【定義兩個整形變數,i用於工作表數量計數,x用於獲取某列最後一個非空單元格】
For i = 2 To Sheets.Count 【for迴圈,遍歷所有工作表(除了彙總之外)】
Cells(i, 1) = Sheets(i).Name【獲取工作表名稱】
x = Sheets(i).Range("C65536").End(xlUp).Row【找到最後一個非空單元格的行號並複製給x】
Cells(i, 2) = Sheets(i).Cells(x, 3)【獲取銷售數量的合計數】
Cells(i, 3) = Sheets(i).Cells(x, 4)【獲取銷售金額的合計數】
Next 【結束迴圈】
六、總結
本案例只列舉了數十個工作表,但是上百個的工作表資料彙總原理一樣,工作表的數量不影響,大家可以自己新建多個工作表,然後生成一些模擬資料來操作一下。不要再複製貼上了,會手軟的哈,希望此文能夠幫到那些經常需要統計資料的苦力吧!
更多的Office技巧請繼續關注頭條號:恆哥說Office,持續為你分享Word、Excel、PPT等軟體操作!讓你工作效率6到飛起!