今天我們來聊聊一個超級實用的場景——數據匯總。公司每個月都有幾十個表格需要匯總到一起,每次用復制粘貼簡直要崩潰,有沒有簡單一點的方法?當然有啦!用 VBA 來匯總數據,輕松一鍵搞定!
不管你的數據是分布在多個工作表還是多個工作簿中,只需要幾行,就能快速完成匯總,既高效又專業!
一、適用場景:快速匯總的典型需求
在日常工作中,數據匯總是一個非常常見的任務,比如:
銷售數據匯總:將多個區域的銷售報表整合到一張總表中,方便統計分析。
財務報表匯總:每個月的財務數據需要匯總到一個年度總表中。
項目數據整理:將不同部門或項目的進度數據整合成一張表,快速生成報告。
如果手動復制粘貼這些數據,不僅浪費時間,還容易出錯。而用 VBA,不管是 10 張表還是 100 張表,只需幾秒鐘就能完成,簡直是效率神器!
二、操作步驟:用 VBA 快速完成匯總
1. 啟用開發者工具
打開 ,點擊【文件】->【選項】。
在彈出的窗口中選擇【自定義功能區】,勾選右側的【開發工具】。
點擊確定,你就可以在菜單欄看到【開發工具】選項卡啦!
2. 打開 VBA 編輯器
按下快捷鍵?Alt + F11?打開 VBA 編輯器,然后點擊【插入】->【模塊】,新建一個模塊用來編寫代碼。
3. 編寫代碼
以下是一段 VBA 代碼,能夠快速匯總所有工作表中的數據到一張“匯總表”中。這段代碼特別適合處理多張表結構相同的數據,比如每個工作表都有相同的列,只需要將行匯總到一起。
Sub?快速完成匯總()
????'?定義變量
????Dim?ws?As?Worksheet
????Dim?匯總表?As?Worksheet
????Dim?最后一行?As?Long
????Dim?匯總行?As?Long
????
????'?創建匯總表(如果不存在,則新建)
????On?Error?Resume?Next
????Set?匯總表?=?ThisWorkbook.Sheets("匯總表")
????If?匯總表?Is?Nothing?Then
????????Set?匯總表?=?ThisWorkbook.Sheets.Add
????????匯總表.Name?=?"匯總表"
????End?If
????On?Error?GoTo?0
????
????'?清空匯總表內容
????匯總表.Cells.Clear
????匯總表.Cells(1,?1).Value?=?"匯總結果"?'?設置標題行的示例(可根據實際需求調整)
????匯總行?=?2?'?從第二行開始填充數據
????
????'?遍歷每張工作表
????For?Each?ws?In?ThisWorkbook.Sheets
????????'?跳過“匯總表”自身
????????If?ws.Name?<>?"匯總表"?Then
????????????'?獲取當前工作表的最后一行
????????????最后一行?=?ws.Cells(ws.Rows.Count,?1).End(xlUp).Row
????????????'?復制數據到匯總表
????????????If?最后一行?>?1?Then?'?確保當前工作表有數據
????????????????ws.Rows("2:"?&?最后一行).Copy?Destination:=匯總表.Cells(匯總行,?1)
????????????????'?更新匯總表的下一行起點
????????????????匯總行?=?匯總表.Cells(匯總表.Rows.Count,?1).End(xlUp).Row?+?1
????????????End?If
????????End?If
????Next?ws
????
????'?自動調整列寬
????匯總表.Columns.AutoFit
????
????'?提示完成
????MsgBox?"數據匯總完成!",?vbInformation
End?Sub
4. 運行代碼
在 VBA 編輯器中,按?F5?或點擊【運行】按鈕執行代碼。
打開 Excel,看看是不是生成了一張名為“匯總表”的工作表,所有其他工作表中的數據都已經匯總到這里了!
【注意】
代碼默認跳過了名為“匯總表”的工作表,避免將匯總數據重復復制回自己。上述代碼假設每個表的標題行在第 1 行,數據從第 2 行開始。如果你的數據結構不同,可以調整?Rows("2:" & 最后一行)?中的數字。

