エクセルでデータを集計していると、連続したセル範囲ではなく、飛び飛びになった複数の範囲の平均値を求めたいケースが出てきます。
たとえば、売上データの中から特定の月だけを選んで平均を出したり、特定の担当者のデータだけを抽出して平均を計算したりする場面は、実務でも非常に多くあります。
エクセルにはAVERAGEIF関数やAVERAGEIFS関数など、条件を指定して平均を求める便利な関数が用意されています。
本記事では、エクセルで平均値を範囲とびとびで計算する方法について、AVERAGEIF関数・条件付き平均・データ抽出の観点からわかりやすく解説していきます。
実務で即活用できる内容をお届けしますので、ぜひ最後までお読みください。
エクセルで範囲とびとびの平均値を求めるにはAVERAGEIF関数が最も実用的
それではまず、範囲とびとびの平均値を求めるための基本的なアプローチと、AVERAGEIF関数の使い方について解説していきます。
離れたセル範囲の平均を求める方法としては、AVERAGE関数にカンマ区切りで複数範囲を指定する方法と、AVERAGEIF関数で条件を指定する方法の2つが代表的です。
目的に応じて使い分けることが、正確な集計を行うための基本となります。
AVERAGE関数でとびとびのセルを指定する方法
最もシンプルな方法は、AVERAGE関数の引数にカンマ区切りで複数のセルや範囲を指定することです。
たとえば「=AVERAGE(B2,B4,B6,B8)」のように入力すると、B2・B4・B6・B8という飛び飛びのセルの平均が計算されます。
また「=AVERAGE(B2:B5,D2:D5)」のように、複数の範囲をカンマでつなぐことも可能です。
AVERAGE関数では最大255個の引数を指定できるため、かなり多くの飛び飛び範囲にも対応できます。
ただし、対象セルが増えるたびに数式を書き直す必要があるため、データが頻繁に増減する場合はAVERAGEIF関数を使うほうが効率的です。
AVERAGEIF関数の基本構文と使い方
AVERAGEIF関数は、指定した条件を満たすセルの平均値を自動的に計算する関数です。
【AVERAGEIF関数の構文】
=AVERAGEIF(範囲, 条件, [平均範囲])
範囲 :条件を判定するセル範囲
条件 :平均の対象とする条件(文字列・数値・比較演算子など)
平均範囲:平均を計算するセル範囲(省略時は「範囲」が対象)
たとえば、A列に担当者名、B列に売上金額が入力されている場合、「=AVERAGEIF(A2:A100,”山田”,B2:B100)」と入力すると、山田さんの売上金額の平均が計算されます。
AVERAGEIF関数を使えば、データの物理的な位置に関係なく、条件に合うデータだけを自動的に抽出して平均を求めることができます。
飛び飛びのデータを手動で選択する手間が省け、データが追加されても自動的に再計算される点が大きな利点です。
AVERAGEIF関数で使用できる条件の書き方
AVERAGEIF関数の条件には、さまざまな書き方が使えます。
文字列を条件にする場合はダブルクォーテーションで囲みます(例:”東京”)。
数値を条件にする場合はそのまま入力します(例:100)。
比較演算子を使う場合は演算子と数値をダブルクォーテーションで囲みます(例:”>=100″、”<50")。
ワイルドカードを使って部分一致検索もできます(例:”東*”で「東」から始まるすべての文字列)。
条件をセル参照にしたい場合は、”>=”&A1のように演算子とセル参照をアンパサンドで連結する記法を使います。
AVERAGEIFS関数で複数条件の平均値を計算する方法
続いては、複数の条件を組み合わせて平均値を求めるAVERAGEIFS関数の使い方を確認していきます。
実務では、「特定の商品かつ特定の月」「特定の担当者かつ売上が一定以上」のように複数条件を組み合わせた平均を求めたいケースが多くあります。
AVERAGEIFS関数の基本構文と複数条件の設定方法
AVERAGEIFS関数はAVERAGEIF関数の複数条件版で、最大127個の条件を指定できます。
【AVERAGEIFS関数の構文】
=AVERAGEIFS(平均範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], …)
平均範囲 :平均を計算するセル範囲(必須)
条件範囲1:1つ目の条件を判定するセル範囲
条件1 :1つ目の条件
条件範囲2:2つ目の条件を判定するセル範囲(以降は繰り返し)
たとえば「=AVERAGEIFS(C2:C100,A2:A100,”東京”,B2:B100,”山田”)」と入力すると、A列が「東京」かつB列が「山田」の行のC列の平均が計算されます。
AVERAGEIF関数との違いは、平均範囲が最初の引数になる点と、複数の条件範囲と条件のペアを続けて指定できる点です。
この順番の違いをよく混同してしまうので、注意しましょう。
日付条件を使った期間指定の平均計算
AVERAGEIFS関数では、日付を条件に使って特定期間のデータの平均を計算することも可能です。
たとえば、2024年1月1日から2024年3月31日の売上平均を求めたい場合は次のように入力します。
【日付条件を使ったAVERAGEIFSの例】
=AVERAGEIFS(B2:B100, A2:A100, “>=”&DATE(2024,1,1), A2:A100, “<=”&DATE(2024,3,31))
A列:日付データ、B列:売上金額
DATE関数を使うことで日付の指定が直感的になる
DATE関数と組み合わせることで、セルに入力した日付を参照した柔軟な期間指定が可能になります。
日付条件を使った平均計算は、月次・四半期・年次のデータ集計で特に活躍します。
AVERAGEIF関数とAVERAGEIFS関数の使い分けポイント
AVERAGEIF関数とAVERAGEIFS関数は、条件の数によって使い分けます。
| 関数名 | 条件の数 | 構文の順番 | 向いているケース |
|---|---|---|---|
| AVERAGEIF | 1つのみ | 範囲→条件→平均範囲 | シンプルな単一条件の平均 |
| AVERAGEIFS | 最大127個 | 平均範囲→条件範囲1→条件1… | 複数条件を組み合わせた平均 |
条件が1つだけの場合はAVERAGEIF関数のほうが構文がシンプルで書きやすいです。
条件が2つ以上になる場合はAVERAGEIFS関数を使います。
最初からAVERAGEIFS関数に統一しておくと、後から条件を追加する際に書き直しが不要になるため便利です。
AVERAGE関数とIF関数を組み合わせた配列数式による平均計算
続いては、AVERAGE関数とIF関数を組み合わせた配列数式で平均を計算する方法を確認していきます。
AVERAGEIF関数では対応できない複雑な条件や計算が必要な場合に、この方法が役立ちます。
配列数式の基本的な考え方
配列数式とは、通常の数式では一度に1つのセルしか処理できないところを、複数のセルをまとめて処理できる特殊な数式形式です。
配列数式はCtrl+Shift+Enterキーで確定することで入力でき、数式バーに「{=…}」のように波括弧が自動的に付きます。
Excel 2019以前のバージョンではCtrl+Shift+Enterが必要ですが、Excel 365およびExcel 2021以降では配列数式が自動的にサポートされるため通常のEnterで確定できます。
AVERAGE+IF配列数式の入力方法
AVERAGE関数とIF関数を組み合わせた配列数式を使うと、AVERAGEIF関数と同様の結果を得られますが、より柔軟な条件指定が可能です。
【AVERAGE+IF配列数式の例】
=AVERAGE(IF(A2:A100=”東京”,B2:B100))
※Excel 2019以前はCtrl+Shift+Enterで確定
※Excel 365・2021以降はEnterで確定可能
A列が「東京」の行のB列の値の平均を計算する
IF関数で条件を満たさないセルはFALSEとして処理され、AVERAGE関数はFALSEの値を無視して計算します。
この方法の利点は、OR条件(どちらかが当てはまる場合)やAND条件(両方当てはまる場合)を柔軟に組み込める点です。
OR条件を使った複数カテゴリの平均計算
AVERAGEIF関数は基本的にAND条件(すべての条件を満たす)しか扱えませんが、OR条件(いずれかの条件を満たす)の平均を求めたい場合は別のアプローチが必要です。
たとえば「東京または大阪」のデータの平均を求めたい場合は、次のような方法が使えます。
【OR条件での平均計算例(方法1)】
=(AVERAGEIF(A2:A100,”東京”,B2:B100)+AVERAGEIF(A2:A100,”大阪”,B2:B100))/2
※各条件の平均を足して条件数で割る(件数が同じ場合に有効)
【OR条件での平均計算例(方法2・配列数式)】
=AVERAGE(IF((A2:A100=”東京”)+(A2:A100=”大阪”),B2:B100))
※+演算子でOR条件を表現する配列数式
方法2の配列数式を使うと件数の偏りに関係なく正確なOR条件の平均が求められます。
複雑な条件の平均計算には配列数式を活用することで、関数の柔軟性を最大限に引き出せます。
PIVOTTABLE・SUBTOTAL関数を使ったデータ抽出と平均計算
続いては、ピボットテーブルやSUBTOTAL関数を使ったデータ抽出と平均計算の方法を確認していきます。
大量データを扱う場合は、関数だけでなくピボットテーブルやSUBTOTAL関数を組み合わせることで、より効率的な集計が可能です。
ピボットテーブルを使った条件別平均の集計
ピボットテーブルを使うと、複数の条件で分類した平均値を一覧表形式で素早く集計できます。
ピボットテーブルを作成し、「値フィールドの設定」で集計方法を「平均」に変更するだけで、各グループの平均値が自動的に計算されます。
行ラベルに担当者名・列ラベルに月を設定すると、担当者×月のクロス集計での平均値一覧が作れます。
ピボットテーブルはデータが増えても「更新」ボタン一つで最新の集計結果に反映されるため、定期的な報告書作成に非常に便利です。
関数の知識がなくてもドラッグ操作だけで平均集計ができる点も、ピボットテーブルの大きな魅力と言えるでしょう。
SUBTOTAL関数でフィルター後のデータの平均を求める方法
SUBTOTAL関数は、フィルターで絞り込んだ表示中のデータだけを対象に集計できる特殊な関数です。
AVERAGE関数はフィルターで非表示になった行も含めて計算しますが、SUBTOTAL関数は表示中の行のみを対象とします。
【SUBTOTAL関数で平均を求める構文】
=SUBTOTAL(1, 範囲) ← 1が平均を意味する
=SUBTOTAL(101, 範囲) ← 101は非表示セルも除外(手動で非表示にした行も除外)
主な機能番号:1=AVERAGE、2=COUNT、9=SUM、11=STDEV
フィルターを使って絞り込んだデータの平均をリアルタイムで確認したい場合は、SUBTOTAL関数が最適です。
フィルター条件を変えるたびに自動的に平均値が更新されるため、データ分析の作業効率が大きく向上します。
AGGREGATE関数を使ったより柔軟な平均計算
AGGREGATE関数はSUBTOTAL関数の上位互換で、エラー値の無視・非表示行の除外・ネストされたSUBTOTALの除外など、より多くのオプションを指定できます。
【AGGREGATE関数で平均を求める構文】
=AGGREGATE(1, 5, 範囲)
第1引数:1=AVERAGE(機能番号)
第2引数:5=非表示の行を無視、エラーを無視(オプション番号)
第3引数:計算対象の範囲
エラー値が混在するデータの平均を求めたい場合、通常のAVERAGE関数ではエラーが発生しますが、AGGREGATE関数ならエラーを無視して正常なデータだけの平均を計算できます。
データの品質が完全でないような実務データを扱う際にAGGREGATE関数は非常に頼りになる関数と言えます。
まとめ
本記事では、エクセルで平均値を範囲とびとびで計算する方法について、AVERAGEIF関数・条件付き平均・データ抽出の観点から詳しく解説しました。
飛び飛びのセルを指定してAVERAGE関数で計算する方法から、AVERAGEIF関数・AVERAGEIFS関数による条件付き平均、配列数式を使ったOR条件対応まで幅広い方法をご紹介しました。
ピボットテーブル・SUBTOTAL関数・AGGREGATE関数を組み合わせることで、大量データの条件別平均集計をより効率的に行うことができます。
目的と状況に合わせて最適な方法を選び、エクセルでのデータ集計をぜひ効率化してください。