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 挿入ツール(QR コードを挿入、パスから画像を挿入、...)| 12 変換ツール(単語に変換する、為替レートの変換、...)| 7 結合と分割ツール(高度な行のマージ、セルの分割、...)|さらに多数 |
Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。
Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします
- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!
すべてのKutools アドインが、たった1 つのインストーラーで完結。
Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。
- オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
- インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
- 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
- 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得