今回は、ExcelのAVERAGEIF関数を使用して、特定の条件を満たすデータだけの平均値を正確に計算・算出する方法について紹介します。
AVERAGEIF関数とは何か
Excelで売上データやテストの点数など、大量の数値が入力された表全体の平均を求める際、通常はAVERAGE関数を使用します。
しかし、実務において「表全体の平均」だけで事足りるケースは少なく、「男性だけの平均点」「東京支店だけの平均売上」「10,000円以上の商品だけの平均単価」といったように、ある特定の条件に絞り込んだ平均値を知りたい場面が頻繁に発生します。
このような場合、データを並べ替えて必要な部分だけを選択してAVERAGE関数を使ったり、フィルターをかけてからSUBTOTAL関数を使ったりといった手間のかかる作業が必要でした。
これを一つの数式だけで瞬時に行ってくれるのが「AVERAGEIF(アベレージ・イフ)関数」です。
名前の通り、AVERAGE(平均)とIF(条件)が合体した関数であり、指定した範囲の中から条件に一致するセルだけを見つけ出し、その数値の平均を自動で計算してくれます。
データ集計や分析において、顧客層別、商品別、期間別などの平均値を素早く比較する上で欠かせない強力なツールです。
関数の構文と引数
AVERAGEIF関数の基本的な構文は以下の通りです。
=AVERAGEIF(範囲, 条件, [平均対象範囲])
- 範囲: 条件を探す対象となるセル範囲(例:所属支店が入力されているA列)を指定します。
- 条件: その範囲の中から見つけ出したい条件(例:”東京支店”)を指定します。
- 平均対象範囲(省略可能):
実際に平均を計算したい数値が入力されているセル範囲(例:売上金額が入力されているC列)を指定します。この引数は省略可能で、省略した場合は最初の「範囲」に指定したセルの数値がそのまま平均の計算に使われます(「10,000円以上」という条件を、売上金額の列自体にかける場合など)。
AVERAGEIF関数を活用する具体的な場面
条件の指定方法を工夫することで、単なる文字の一致から数値の絞り込みまで、様々なパターンの平均値を求めることができます。
特定の文字列と一致するデータの平均を求める
最も基本的な使い方が、名簿や売上表などから「特定の部署」や「特定の商品」だけの平均を算出するケースです。
例えば、A列に「部署名」、C列に「残業時間」が入力されている表から、「営業部」の平均残業時間を求めたいとします。
=AVERAGEIF(A:A, “営業部”, C:C)
この数式をセルに入力すると、ExcelはA列の中から「営業部」という文字を探し出し、該当する行のC列(残業時間)の数値だけを拾い集めて、その平均値を計算してくれます。
部署名が入力された別のセル(例:E2)を参照して、=AVERAGEIF(A:A, E2,
C:C)とすることも可能です。この方法なら、E2の文字を「総務部」に書き換えるだけで、数式をいじらずに総務部の平均残業時間に瞬時に切り替わります。
特定の数値(以上・以下)を条件にして平均を求める
条件には文字だけでなく、比較演算子(>, =, <=, )を使って数値の範囲を指定することもできます。
例えば、テストの点数(B列)の中で、「0点(欠席者など)を除外して、1点以上の人の本当の平均点」を求めたい場合、条件は「”>0″(0より大きい)」となります。
この場合、条件を探す範囲と平均を計算する範囲が同じ(B列)になるため、第3引数(平均対象範囲)は省略できます。
=AVERAGEIF(B:B, “>0”)
比較演算子を数式の中に直接記述する場合は、必ずその演算子と数値をセットにして「””(ダブルクォーテーション)」で囲むというルールがある点に注意が必要です。
また、「80点以上の人の平均」なら「”>=80″」となります。極端に高い外れ値(異常値)や、未入力によるゼロを除外して、より実態に近い平均値(トリム平均に近い考え方)を算出したい場合に非常に有効なテクニックです。
複数の条件を指定する「AVERAGEIFS関数」へのステップアップ
実務では、「東京支店の、かつ、営業部の平均売上」といったように、複数の条件を同時に満たすデータの平均を求めたい場面も出てきます。
この場合、AVERAGEIF関数では条件が1つしか指定できないため対応できません。
AVERAGEIFS関数の構文と違い
複数の条件で平均を求めるために用意されているのが「AVERAGEIFS(アベレージ・イフス)関数」です。
構文がAVERAGEIF関数とは少し異なり、一番最初に「平均を計算する範囲」を指定し、その後に「条件範囲1, 条件1, 条件範囲2,
条件2…」と続けていく順番になります。
=AVERAGEIFS(平均対象範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], …)
(例:=AVERAGEIFS(C:C, A:A, “東京支店”, B:B, “営業部”))
条件が1つの場合でもAVERAGEIFS関数を使うことができるため、最近では「最初から複数条件にも対応できるAVERAGEIFS関数だけを覚えておく(AVERAGEIF関数は使わない)」という人も増えています。
ただし、引数の順番(平均対象範囲が最初か最後か)が異なるため、数式を作る際にはこの違いを正確に理解しておく必要があります。
AVERAGEIF関数を使用する際の注意点
正しい平均値を求めるために、空白セルやエラー値の扱いについての仕様を理解しておく必要があります。
空白セルと「0」の違い
AVERAGEIF関数(および通常のAVERAGE関数)は、計算対象の範囲に「完全に空白のセル(何も入力されていないセル)」が含まれている場合、そのセルを「存在しないもの(計算の母数に含めない)」として無視して平均を計算します。
しかし、セルに「0」が入力されている場合は、それを「データの一つ(0点という立派な成績)」として認識し、計算の母数(分母)に含めてしまいます。
例えば、「100点」と「空白」の2人の平均は「100 ÷ 1 =
100点」になりますが、「100点」と「0点」の2人の平均は「(100+0) ÷ 2 = 50点」になります。
「未受験者(まだデータがない)」を空白にしておくか、それとも「0」と入力しておくかで、結果が大きく変わってしまいます。
もし、システムから出力されたデータに不要な「0」が大量に入力されており、それを除外して計算したい場合は、前述したように条件として「”>0″」を指定する(または「”0″(0と等しくない)」とする)工夫が必要です。
まとめ
ExcelのAVERAGEIF関数を使用して、特定の条件に一致するデータだけの平均値を正確に計算する方法について解説しました。
「=AVERAGEIF(範囲, 条件,
平均対象範囲)」という構文で、「営業部だけ」といった文字の条件や、「0点を除く(>0)」といった数値の条件を指定することで、目的の層に絞り込んだ平均値の分析が瞬時に完了します。
比較演算子を「””(ダブルクォーテーション)」で囲むルールや、空白セルと「0」が平均計算に与える影響の違いを理解しておくことが、集計ミスを防ぐための重要なポイントです。
さらに複数の条件を掛け合わせたい場合は、「平均対象範囲」を最初に指定するAVERAGEIFS関数へとステップアップすることで、より高度なクロス集計が可能になります。
データ全体の漠然とした平均から一歩踏み込み、特定の条件で絞り込んだ意味のある数値をスピーディに引き出すために、このAVERAGEIF関数をぜひ習得してみてはいかがでしょうか。