如何在 Excel 中計算加權平均?
加權平均值適用於各項目對整體結果影響程度不一的情境。例如,在分析包含產品價格、重量與數量的購物清單時,若使用 Excel 的一般 AVERAGE 函數,僅會計算簡單算術平均值,無法反映各項目因數量或重量不同而產生的實際重要性。然而在許多商業或預算應用中,您往往需要計算加權平均值(例如根據數量或重量調整後的每單位平均價格),讓每個項目的影響力與其真實比重相符。本文將介紹如何在 Excel 中計算加權平均值,包括針對特定條件的計算方法,以及運用 VBA 與資料透視表處理更具動態性或複雜需求的進階技巧。
VBA 程式碼 – 自動化加權平均計算,適用於動態範圍或多條件篩選
在 Excel 中計算加權平均
假設您有一份如下方截圖所示的購物清單。雖然 Excel 的 AVERAGE 函數能直接計算平均價格,卻未納入重量或數量的考量;在此類情況下,計算加權平均值會更為準確——透過讓重量較大或出現頻率較高的項目對結果產生更大影響,真實反映每單位的實際成本。

若要計算加權平均價格,請結合使用以下函數:SUMPRODUCT 與 SUM,公式如下:
選取一個空白儲存格(例如 F2),輸入下列公式:
=SUMPRODUCT(C2:C18,D2:D18)/SUM(C2:C18) 接著按下 Enter 鍵,立即取得結果!

注意:在此公式中,C2:C18 代表「重量」欄,D2:D18 則對應「價格」欄。請根據您的資料配置調整這些範圍。SUMPRODUCT 函數會將每筆重量與對應價格相乘後加總,而 SUM 則計算重量總和,從而精準得出加權平均值。務必確保兩組範圍長度一致,且資料中無空儲存格或不匹配項目,以免造成計算錯誤。
若計算出的加權平均值顯示的小數位數過多或過少,請選取該儲存格,然後點擊增加小數位數按鈕
或減少小數位數按鈕
(位於)常用索引標籤),即可依需求輕鬆調整顯示的小數位數!

若出現 #VALUE! 等錯誤,請再次確認所有參照儲存格皆為數值,且範圍一致。同時,請勿將標題列納入計算範圍,以確保結果準確無誤。處理大型資料集時,建議使用具名範圍,提升公式清晰度與後續維護的便利性。
在 Excel 中計算符合指定條件的加權平均
前述公式會計算所有項目的加權平均價格。但在實際分析中,您可能需要針對特定類別(例如僅「蘋果」)計算加權平均價格。此時,可強化公式,加入符合您條件的篩選邏輯。
為達此目的,請選取一個空白儲存格(例如 F8),並輸入下列公式:
=SUMPRODUCT((B2:B18="Apple")*C2:C18*D2:D18)/SUMIF(B2:B18,"Apple",C2:C18) 接著按下 Enter 鍵,即可計算符合特定條件的加權平均值。此公式僅在項目符合條件(本例為「Apple」)時,才會將對應的重量與價格相乘後加總,並除以該項目對應的重量總和。

注意:此處 B2:B18 為「水果」欄,C2:C18 為「重量」欄,而 D2:D18 則為「價格」欄。請依需求將「Apple」替換為其他項目。此方法適用於單一條件篩選;若需同時依據多個條件篩選(例如水果種類與供應商),建議使用輔助欄位或更進階的公式,輕鬆提升篩選效率!
套用公式後,您可能希望調整小數位數以提升可讀性。請選取結果儲存格,並點擊常用索引標籤中的增加小數位數
或減少小數位數
按鈕,即可立即變更顯示的小數位數!

若公式傳回非預期結果,請確認目標範圍內確實存在符合條件的項目,並檢查原應為數值的欄位是否包含空白儲存格或文字內容。
VBA 程式碼 – 自動化加權平均計算,適用於動態區域或多重條件
在某些情況下,您可能經常需要針對大小會變動、包含遺漏值,或需彈性篩選(例如同時套用多個條件)的範圍計算加權平均值。與手動更新公式或範圍相比,透過 VBA 巨集自動化此計算過程不僅能節省寶貴時間,更能大幅降低出錯機率——尤其在處理大型或定期更新的資料集時,優勢更為顯著。
以下是建立並使用加權平均 VBA 巨集的方法:
1. 點擊開發人員 > Visual Basic(或按下 )Alt + F11),即可開啟 Microsoft Visual Basic for Applications 編輯器視窗。接著點擊插入 > 模組,並將下列程式碼貼到新模組視窗中:
Sub WeightedAverageVBA()
Dim rngCriteria As Range
Dim rngWeight As Range
Dim rngValue As Range
Dim criteriaStr As String
Dim totalWeighted As Double
Dim totalWeight As Double
Dim i As Long
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set rngCriteria = Application.InputBox("Select the range for criteria (optional, press Cancel to skip):", xTitleId, Type:=8)
criteriaStr = Application.InputBox("Enter criteria for filtering (leave blank for all):", xTitleId, Type:=2)
Set rngWeight = Application.InputBox("Select the Weight (numeric) range:", xTitleId, Type:=8)
Set rngValue = Application.InputBox("Select the Value (e.g. Price) range:", xTitleId, Type:=8)
totalWeighted = 0
totalWeight = 0
If rngCriteria Is Nothing Or criteriaStr = "" Then
For i = 1 To rngWeight.Cells.Count
If IsNumeric(rngWeight.Cells(i).Value) And IsNumeric(rngValue.Cells(i).Value) Then
totalWeighted = totalWeighted + rngWeight.Cells(i).Value * rngValue.Cells(i).Value
totalWeight = totalWeight + rngWeight.Cells(i).Value
End If
Next i
Else
For i = 1 To rngWeight.Cells.Count
If rngCriteria.Cells(i).Value = criteriaStr Then
If IsNumeric(rngWeight.Cells(i).Value) And IsNumeric(rngValue.Cells(i).Value) Then
totalWeighted = totalWeighted + rngWeight.Cells(i).Value * rngValue.Cells(i).Value
totalWeight = totalWeight + rngWeight.Cells(i).Value
End If
End If
Next i
End If
If totalWeight = 0 Then
MsgBox "Weighted average cannot be calculated: total weight is zero.", vbExclamation, xTitleId
Else
MsgBox "Weighted average: " & totalWeighted / totalWeight, vbInformation, xTitleId
End If
End Sub 2. 按下 F5(或點擊)
執行按鈕)即可執行。
系統將逐步引導您選取範圍(條件範圍—若不需要可跳過、權重範圍及數值範圍)。您也可輸入特定條件篩選計算內容,或留空以納入所有資料。此巨集支援動態區域,表格經常擴充或變動時相當實用!
最後,您將收到一個訊息方塊,其中列出加權平均的計算結果。
提示:
- 此方法能自動化重複性的加權平均分析,並可進一步擴充,以支援額外的篩選條件或輸出選項。
- 請確保所選區域的長度相等,且資料類型一致。
- 如範例所示,請加入基本的錯誤處理機制(例如:當找不到有效權重,或權重總和為零時)。
- 若您只想套用至篩選後/可見的列,可進一步透過「特殊儲存格」列舉方式強化程式碼。
若遇到權限或巨集安全性問題,請先在 Excel 設定中啟用巨集,再執行程式碼。
相關文章:
最佳 Office 生產力工具
| 🤖 | KUTOOLS AI 助手:基於以下內容徹底革新數據分析:智慧執行 | 產生程式碼| 建立自訂公式 | 分析資料並產生圖表| 呼叫增強函數…… |
| 熱門功能:尋找、醒目提示或標記重複值 | 刪除空白行 | 合併列或儲存格而不遺失資料 | 不使用公式的四捨五入…… | |
| 高級 LOOKUP:多重條件 VLookup | 多重數值 VLookup | 跨多個工作表 VLookup | 模糊查找…… | |
| 高級下拉列表:快速建立下拉式清單 | 相依式下拉式清單 | 多選下拉式清單…… | |
| 欄位管理員:新增指定數量的欄位|移動欄位|切換隱藏欄位的可見狀態|比較範圍與欄位…… | |
| 精選功能:網格聚焦 | 設計視圖 |增強編輯欄 | 工作簿與工作表管理員 | 資源庫(自動文字)| 日期提取 | 合併工作表 | 加密/解密儲存格 | 依清單傳送電子郵件 | 超級篩選 | 特殊篩選(篩選粗體儲存格/斜體/刪除線……) ...... | |
| 頂尖 15 工具組:12 文字工具(添加文本,刪除特定字符,……)| 50+ 圖表 類型(甘特圖,……)| 40+ 實用公式(基於生日計算年齡,……)| 19 插入工具(插入二維碼,從路徑插入圖片,……)| 12 轉換工具(金額轉大寫,匯率轉換,……)| 7 合併和拆分工具(高級合併行,分割儲存格,……)|……以及更多 |
運用 Kutools for Excel 強化您的 Excel 技能,體驗前所未有的高效能!Kutools for Excel 提供超過 300 項進階功能,大幅提升生產力並節省寶貴時間。立即點擊,取得您最需要的功能……
Office Tab 為 Office 帶來分頁式介面,讓您的工作更輕鬆自在!
- 在 Word、Excel、PowerPoint 中啟用分頁式編輯與閱讀功能,以及 Access、Visio 與 Project。
- 在同視窗的新分頁中開啟並建立多份文件,而非另開新視窗。
- 每天為您提升 50% 的工作效率,並省下數百次滑鼠點擊!
所有 Kutools 增益集,一個安裝程式
Kutools for Office 套件整合了 Excel、Word、Outlook 與 PowerPoint 的增益集,以及 Office Tab Pro,非常適合需要跨多個 Office 應用程式協作的團隊使用!
- 全能套件— 包含 Excel、Word、Outlook 與 PowerPoint 增益集,以及 Office Tab Pro
- 一個安裝程式,一個授權— 數分鐘內即可完成設定(支援 MSI)
- 協同運作更出色— 在多個 Office 應用程式間實現流暢的生產力體驗
- 30 天完整功能試用— 無需註冊,無需信用卡
- 超值之選— 比單獨購買各增益集更省費用