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到飛起!