AVERAGEIF関数の使い方|条件に合うものだけ平均する

執筆者:

カテゴリ:

AVERAGEIFは、条件に合う行だけの平均を求める関数です。

SUMIF の平均版で、引数の順番も同じです。ExcelとGoogleスプレッドシートで共通です。

書式

=AVERAGEIF(条件の範囲, 条件, [平均する範囲])
引数 内容
条件の範囲 条件を判定する列
条件 判定の内容。" で囲む
平均する範囲 実際に平均する列。省略すると条件の範囲を平均

SUMIF と同じ順番です(条件の範囲が先)。複数条件版の AVERAGEIFS は逆順になるので注意してください。

基本の使い方

A B
1 支店 売上
2 東京 1200
3 大阪 800
4 東京 1500
=AVERAGEIF(A2:A4, "東京", B2:B4)   → 1350

条件をセル参照にすれば切り替えられます。

=AVERAGEIF(A:A, D1, B:B)

条件の書き方

条件 意味
"東京" 完全一致
">1000" 1000より大きい
"<>0" 0以外
"<>" 空欄でない
"東*" 「東」で始まる

セルの値と比較するときは & で連結します。

=AVERAGEIF(B:B, ">"&D1)

">D1" と書くと文字列の「D1」を探します。

0を除いた平均

AVERAGEIFの実務で最も便利な使い方がこれです。

AVERAGE は0を1件として数えるため、未入力に0が入っていると平均が下がります。

=AVERAGEIF(A:A, "<>0")

これで0の行を除いた平均が出ます。

空欄でないものだけなら次の形です。

=AVERAGEIF(A:A, "<>")

数式が返した ""(見た目は空欄)も、この書き方なら除外できます。AVERAGE を直接使うより安全です。

外れ値を除いた平均

極端な値を除きたい場合にも使えます。

=AVERAGEIF(A:A, "<10000")

10000未満のものだけで平均を出します。ただし、除外の基準を恣意的に決めると数字を作り込むことになるので、除外した条件は必ず明記してください。

条件が2つ以上あるとき

AVERAGEIFS を使います。引数の順番が逆になる点に注意してください。

=AVERAGEIFS(平均する範囲, 条件範囲1, 条件1, 条件範囲2, 条件2)

例:

=AVERAGEIFS(C:C, A:A, "東京", B:B, ">=1000")

SUMIFS と同じく、平均する範囲が最初です。AVERAGEIFとは逆なので、混同しやすいところです。

条件が1つでもAVERAGEIFSで書くと決めてしまえば、順番の混乱がなくなります。

#DIV/0! が出る原因

条件に合う行が1件もない、という意味です。0で割ることになるので発生します。

原因はほぼ次のどれかです。

  • – 条件の文字列にスペースが入っている("東京 "
  • – 全角と半角が違う
  • – 数値が文字列になっている
  • – 平均する範囲に数値が1つもない

エラーを消す前に、条件が正しいか確認してください。

該当なしが正常なケースなら、IFERROR で包みます。

=IFERROR(AVERAGEIF(A:A, D1, B:B), "該当なし")

0 ではなく「該当なし」と表示するほうが親切です。0だと「平均が0だった」のか「該当がなかった」のか区別できません。

Excelとの違い

AVERAGEIF・AVERAGEIFS ともに共通です。書式も挙動も同じです。

Googleスプレッドシートでは、FILTER と組み合わせる書き方もできます。条件が複雑なときはこちらが読みやすいことがあります。

=AVERAGE(FILTER(C:C, A:A="東京", C:C>0))

グループ別の平均を一度に出したいなら QUERY です。

=QUERY(A:C, "select A, avg(C) group by A", 1)

まとめ

  • – 書式は =AVERAGEIF(条件の範囲, 条件, 平均する範囲)
  • SUMIF と同じ順番AVERAGEIFS は逆順
  • 0を除いた平均=AVERAGEIF(A:A, "<>0")
  • #DIV/0! は「条件に合う行が1件もない」という意味
  • – エラーを隠す前に、条件のスペース・全角半角を確認する

関連する関数

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です