「A部署だけの平均残業時間を知りたい」「この商品カテゴリだけの平均単価を出したい」――集計表を作っていると、範囲全体の平均ではなく、条件に合う行だけの平均を求めたい場面が頻繁にあります。AVERAGE関数をそのまま使うと全員・全商品を巻き込んで平均してしまい、本来知りたかった数字とはズレた結果になりがちです。この記事では、条件付き平均を1つの数式で出せるAVERAGEIF関数の使い方と、実務でよく起きるトラブルへの対処法を解説します。

AVERAGEIFの基本構文

AVERAGEIFは、SUMIF関数の「平均バージョン」にあたる関数です。条件に一致する行を探すところまではSUMIFと同じ考え方で、最後に合計ではなく平均を計算する点だけが違います。

=AVERAGEIF(条件範囲, 条件, 平均対象範囲)

例:部署列(B列)が「営業部」の行だけを対象に、残業時間列(C列)の平均を出す
=AVERAGEIF(B1:B10,"営業部",C1:C10)

注意したいのは引数の順番です。SUMIFと同じく「条件範囲→条件→平均(合計)対象範囲」の順に書きますが、条件範囲と平均対象範囲を逆に指定してしまうと、意図しない列を平均してしまったり、エラーにすらならずに違う数字が出てしまったりすることがあります。数式を組むときは「どの列を見て判定するか」と「どの列の数字を平均するか」を分けて考えると間違いにくくなります。

実務でのよくある使用シーン

総務担当者であれば、勤怠データから「部署別の平均残業時間」や「拠点別の平均通勤手当」を出して、労務管理の資料に使う場面が典型的です。経理担当者であれば、経費精算データから「勘定科目別の平均申請額」を集計し、異常値が混ざっていないかのチェックに使えます。営業事務担当者であれば、受注データから「商品カテゴリ別の平均単価」や「担当者別の平均受注額」を出して、営業会議の資料作成に活用するケースがよくあります。いずれも「範囲全体の平均」ではなく「属性ごとに切り分けた平均」を知りたいという共通点があり、AVERAGEIFが得意とする領域です。

AVERAGEIFでよくあるエラー・トラブルと対処法

#DIV/0! エラー

条件に一致するデータが1件も見つからないときに発生します。AVERAGEIFは内部的に「合計÷件数」を計算しているため、該当件数が0だと0で割る計算と同じ扱いになってしまいます。

例:="AVERAGEIF(B1:B10,"開発部",C1:C10) で、B列に「開発部」が1件もない

対処法として、条件に該当するデータが存在しない可能性がある場合は、IFERROR関数で包んで =IFERROR(AVERAGEIF(B1:B10,"開発部",C1:C10),"対象なし") のようにしておくと、エラーのままシートに残らず見た目も崩れません。

平均が想定より大きく下がる(0が混ざっている)

未入力のつもりで「0」と入力してしまったセルは、空白と違ってAVERAGEIFの計算対象にそのまま含まれてしまいます。

例:欠勤者の残業時間欄に「0」と入力 → 実際は9人分のはずが10人分として平均される

対処法として、「まだ実績がない」「対象外」であるデータは0ではなく空白のままにしておくのが基本です。すでに0が入力されてしまっているデータを集計する場合は、条件範囲側に「0でない」という条件を追加するか、平均対象範囲側で0を除外する工夫が必要になります。

条件範囲と平均対象範囲の行数がズレて結果がおかしい

条件範囲(B列)と平均対象範囲(C列)の開始行・終了行が1行でもズレていると、Aさんの部署とBさんの残業時間が組み合わさって計算されるなど、対応関係が崩れたまま平均が出てしまいます。

例:=AVERAGEIF(B2:B10,"営業部",C1:C9) のように開始行が1行ズレている

対処法として、条件範囲と平均対象範囲は必ず同じ開始行・終了行で指定してください。列全体(B:B、C:C)で指定しておくと、後でデータ行が増減してもズレる心配がなく安定します。

AVERAGEとAVERAGEIF・AVERAGEIFSの使い分け

AVERAGE

  • 範囲内の数値すべてが対象
  • 条件なしの単純な平均
  • 文字列・空白は無視される

AVERAGEIF

  • 条件は1つだけ指定可能
  • 「部署が営業部」など1条件の平均
  • SUMIFと同じ引数の考え方

AVERAGEIFS

  • 条件を2つ以上指定できる
  • 「部署が営業部、かつ正社員」など複合条件
  • 平均対象範囲を一番最初に書く

条件が1つで足りるうちはAVERAGEIFで十分ですが、「部署も雇用形態も両方絞り込みたい」というように条件が増えたときは、複数条件に対応したAVERAGEIFSに切り替えます。AVERAGEIFSはAVERAGEIFと引数の並び順が異なり、平均対象範囲を一番最初に書く点だけ注意しておくと書き間違いを防げます。

初心者がつまずきやすいポイントとコツ

まとめ

AVERAGEIFは、条件に一致するデータだけを対象に平均を計算できる、実務で非常に使用頻度の高い関数です。AVERAGEとの違いを理解し、0と空白の扱いの違い、範囲のズレによる対応関係の崩れに気をつければ、部署別・商品別といった条件付きの平均集計を安定して作れるようになります。条件が2つ以上必要になったらAVERAGEIFS、条件がまったく不要ならAVERAGEと、目的に応じて使い分けましょう。数式を一から組み立てるのが不安な方は、下のツールで日本語の空欄を埋めるだけで数式を作成できます。

よくある質問

AVERAGEIFとAVERAGEの違いは何ですか?
AVERAGEは範囲内の数値をすべて対象に平均を計算しますが、AVERAGEIFは条件に一致する行だけを対象に平均を計算します。部署別・商品別など「特定の条件に絞った平均」を出したい場合はAVERAGEIF、範囲全体の単純な平均でよい場合はAVERAGEを使います。
対象データが1件もないとどうなりますか?
条件に一致するデータが1件も見つからない場合、AVERAGEIFは#DIV/0!エラーを返します。0で割る計算と同じ扱いになるためです。この場合はIFERROR関数と組み合わせて、エラー時に空欄や「対象なし」と表示させると見た目がすっきりします。
条件が2つ以上ある場合はどうすればよいですか?
AVERAGEIFは条件を1つしか指定できません。「部署が営業部、かつ雇用形態が正社員」のように条件が2つ以上になる場合は、複数条件に対応したAVERAGEIFSを使います。引数の順番がAVERAGEIFと少し異なり、AVERAGEIFSでは平均対象の範囲を一番最初に書く点に注意してください。

関連記事

→ AVERAGEIFの数式を作ってみる ← 記事一覧に戻る