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件もない」という意味 - – エラーを隠す前に、条件のスペース・全角半角を確認する
コメントを残す