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