KutoolsforOffice — 一套方案,五大工具。事半功倍。三月特賣:20% 折扣

如何在 Excel 中計算加權平均?

作者Kelly修改日期

加權平均值適用於各項目對整體結果影響程度不一的情境。例如,在分析包含產品價格、重量與數量的購物清單時,若使用 Excel 的一般 AVERAGE 函數,僅會計算簡單算術平均值,無法反映各項目因數量或重量不同而產生的實際重要性。然而在許多商業或預算應用中,您往往需要計算加權平均值(例如根據數量或重量調整後的每單位平均價格),讓每個項目的影響力與其真實比重相符。本文將介紹如何在 Excel 中計算加權平均值,包括針對特定條件的計算方法,以及運用 VBA 與資料透視表處理更具動態性或複雜需求的進階技巧。

在 Excel 中計算加權平均

在 Excel 中計算符合指定條件的加權平均

VBA 程式碼 – 自動化加權平均計算,適用於動態範圍或多條件篩選


在 Excel 中計算加權平均

假設您有一份如下方截圖所示的購物清單。雖然 Excel 的 AVERAGE 函數能直接計算平均價格,卻未納入重量或數量的考量;在此類情況下,計算加權平均值會更為準確——透過讓重量較大或出現頻率較高的項目對結果產生更大影響,真實反映每單位的實際成本。

顯示原始資料的螢幕截圖

若要計算加權平均價格,請結合使用以下函數:SUMPRODUCTSUM,公式如下:

選取一個空白儲存格(例如 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」替換為其他項目。此方法適用於單一條件篩選;若需同時依據多個條件篩選(例如水果種類與供應商),建議使用輔助欄位或更進階的公式,輕鬆提升篩選效率!

套用公式後,您可能希望調整小數位數以提升可讀性。請選取結果儲存格,並點擊常用索引標籤中的增加小數位數「減少小數位數」按鈕2的螢幕截圖減少小數位數「減少小數位數」按鈕2的螢幕截圖按鈕,即可立即變更顯示的小數位數!

選取其中一種小數格式2的螢幕截圖

若公式傳回非預期結果,請確認目標範圍內確實存在符合條件的項目,並檢查原應為數值的欄位是否包含空白儲存格或文字內容。


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—支援英文、西班牙文、德文、法文、中文及另外 40+ 種語言!

運用 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 應用程式協作的團隊使用!

ExcelWordOutlookTabsPowerPoint
  • 全能套件— 包含 Excel、Word、Outlook 與 PowerPoint 增益集,以及 Office Tab Pro
  • 一個安裝程式,一個授權— 數分鐘內即可完成設定(支援 MSI)
  • 協同運作更出色— 在多個 Office 應用程式間實現流暢的生產力體驗
  • 30 天完整功能試用— 無需註冊,無需信用卡
  • 超值之選— 比單獨購買各增益集更省費用