在日常資料處理中,統計數量、加總金額、計算平均值等動作常常重複進行。若能透過 VBA 一鍵完成統計並產出摘要,不僅節省時間,也能避免公式錯誤與人工疏漏。本文將教你如何建立一個「一鍵統計」功能,自動計算指定欄位的統計值並輸出至摘要區塊。
功能概述
這段 VBA 程式碼可實現以下功能:
- 自動統計指定欄位的筆數、總和與平均值
- 將統計結果輸出至指定儲存格區塊(例如工作表底部或側邊)
- 支援動態資料範圍(自動偵測資料列數)
- 適用於任意欄位與工作表格式
VBA 程式碼範例
Sub GenerateSummary()
Dim ws As Worksheet
Dim DataCol As Range
Dim LastRow As Long
Dim SummaryStartRow As Long
Dim CountVal As Long
Dim SumVal As Double
Dim AvgVal As Double
Set ws = ActiveSheet
' 偵測資料範圍(以第 B 欄為例)
LastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
Set DataCol = ws.Range("B2:B" & LastRow)
' 計算統計值
CountVal = Application.WorksheetFunction.Count(DataCol)
SumVal = Application.WorksheetFunction.Sum(DataCol)
If CountVal > 0 Then
AvgVal = SumVal / CountVal
Else
AvgVal = 0
End If
' 輸出統計結果(在資料列下方)
SummaryStartRow = LastRow + 2
ws.Cells(SummaryStartRow, "A").Value = "統計摘要"
ws.Cells(SummaryStartRow + 1, "A").Value = "筆數"
ws.Cells(SummaryStartRow + 1, "B").Value = CountVal
ws.Cells(SummaryStartRow + 2, "A").Value = "總和"
ws.Cells(SummaryStartRow + 2, "B").Value = SumVal
ws.Cells(SummaryStartRow + 3, "A").Value = "平均"
ws.Cells(SummaryStartRow + 3, "B").Value = AvgVal
MsgBox "統計摘要已產出", vbInformation
End Sub
程式碼詳細解說(初學者導向)
先來設定一下我們要拿來計算的欄位資料~
簡單的設定了4筆資料,接下來我們看一下程式碼
上面這段程式碼的目的是針對指定欄位(此例為 B 欄)進行統計,並將結果輸出至工作表底部。以下是逐段說明~
首先,我們宣告變數:
ws是目前作用中的工作表。DataCol是要統計的資料範圍(此例為 B2 到最後一列)"B2:B" 。LastRow是資料的最後一列位置。SummaryStartRow是統計摘要開始輸出的列位置(LastRow + 2)。CountVal是資料筆數。SumVal是資料總和。AvgVal是資料平均值。
接著使用 End(xlUp) 偵測 B 欄的最後一列,並設定統計範圍為 B2 到 B最後列。
使用 WorksheetFunction.Count 計算筆數,Sum 計算總和,並以總和除以筆數計算平均值。若筆數為 0,則平均值設為 0。
最後將統計結果輸出至資料列下方,依序標示「筆數」、「總和」、「平均」,並使用 MsgBox 顯示提示訊息。
跑完程式碼,預期結果如下圖 :

操作步驟與使用方式
- 將程式碼貼入 Excel 的模組中(例如 Module1)
- 確保資料已填入 B 欄(從第 2 列開始)
- 切換至要統計的工作表
- 執行
GenerateSummary程式 - 統計結果將自動輸出至資料列下方
應用場景與延伸建議
- 統計銷售金額、訂單數量、庫存數量
- 每日或每週資料彙整
- 教學作業或問卷結果快速統計
延伸功能建議:
- 支援多欄位統計(例如 B、C、D 欄)
- 自動偵測欄位名稱並產出摘要
- 將統計結果輸出至另一張工作表
- 加入條件篩選(例如只統計金額 > 0 的資料)
常見問題 FAQ
Q1:是否可以統計其他欄位?
可以修改 Range("B2:B" & LastRow) 中的欄位代號,例如改為 "C" 或 "D"。
Q2:是否可以統計含有空白或文字的欄位?
目前使用 Count 函數只計算數值儲存格,若需排除文字或空白,可改用 CountIf 或 IsNumeric 判斷。
Q3:是否可以將統計結果輸出到另一張工作表?
可以將 ws 改為 Worksheets("摘要"),並確保該工作表存在。
結語與延伸閱讀
這段 VBA 程式碼提供了高效率的「一鍵統計並產出摘要」功能,適合用於報表彙整、資料分析與教學應用。後續你可以加入多欄統計、條件篩選與格式化模組,打造完整的資料統計工具,也可以加入篩選與其他計算需求,讓你的工作直接升級自動化!
下一篇將介紹如何「一鍵複製資料到主工作簿」,敬請期待【VBA 自動化教學】第 7 篇~!













