「支店ごとの売上平均を出したい」「80点以上のテストだけで平均を計算したい」…Excelでこんな場面、意外と多いですよね。
全体の平均ならAVERAGE関数で出せますが、条件をつけて一部のデータだけの平均を出したいときは、AVERAGEIF関数の出番です。この記事では、AVERAGEIF関数の基本的な使い方から、ワイルドカードを使った応用、よくあるエラーの対処法まで、実例つきでまるっと解説していきます。
AVERAGEIF関数とは?
AVERAGEIF関数(読み方: アベレージ・イフ)は、指定した条件に一致するセルだけを対象にして平均値を求める関数です。名前のとおり、「AVERAGE(平均)」と「IF(もし)」を組み合わせた関数ですね。
たとえば、こんな場面で活躍します。
- 特定の支店の売上だけの平均を出す
- 80点以上のテスト結果だけで平均点を計算する
- 0を除いたデータだけで正確な平均を求める
条件なしの平均は[[AVERAGE関数とは?使い方・エラー対処・応用を初心者向けに解説|AVERAGE関数]]で求められますが、「この条件に合うデータだけ」と絞り込みたいときにAVERAGEIF関数が力を発揮します。
対応バージョン
AVERAGEIF関数はExcel 2007以降のすべてのバージョン、Microsoft 365、Googleスプレッドシートで使用できます。
AVERAGEIF関数の書き方(構文と引数)
基本構文
=AVERAGEIF(範囲, 検索条件, [平均対象範囲])
カッコの中に、条件を判定する範囲・検索条件・平均を計算する範囲を指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 範囲 | 必須 | 条件を判定するセル範囲。ここに検索条件を照合する |
| 検索条件 | 必須 | 平均に含めるかどうかを判定する条件。数値・文字列・セル参照・比較演算子が使える |
| 平均対象範囲 | 任意 | 実際に平均を計算するセル範囲。省略すると「範囲」がそのまま平均計算の対象になる |
ポイントは、「条件を判定する場所」と「平均を計算する場所」を分けられることです。たとえば、A列の支店名で条件を判定して、B列の売上で平均を計算する、といった使い方ができます。
条件を判定する範囲と平均を計算する範囲が同じ場合は、平均対象範囲を省略してOKです。
AVERAGEIF関数の基本的な使い方
ここからは、実際にAVERAGEIF関数を使ってみましょう。
特定の支店だけの売上平均を求める
たとえば、A列に支店名、B列に売上金額が入っている表があるとします。「東京支店」の売上平均だけを求めたい場合はこう書きます。
=AVERAGEIF(A2:A20, "東京支店", B2:B20)
この式は「A2からA20の中で”東京支店”と書かれている行を探し、対応するB列の売上金額で平均を計算する」という意味です。
- 範囲: A2:A20(支店名が入っている列)
- 検索条件: “東京支店”
- 平均対象範囲: B2:B20(売上金額が入っている列)
条件を判定する列と平均を計算する列が違うので、3つの引数すべてを指定しています。
数値の条件で平均を求める(以上・以下)
「80点以上のテストだけで平均を出したい」のように、数値の条件を指定することもできます。比較演算子を使う場合は、条件全体を ダブルクォーテーション(”)で囲む のがポイントです。
=AVERAGEIF(B2:B30, ">=80")
この式は「B2からB30のうち、80以上のセルだけで平均を求める」という意味です。
使える比較演算子をまとめておきます。
| 演算子 | 意味 | 使用例 |
|---|---|---|
| > | より大きい | “>100” |
| < | より小さい | “<50" |
| >= | 以上 | “>=80” |
| <= | 以下 | “<=1000" |
| <> | 等しくない | “<>0″ |
比較演算子を使う場合、平均対象範囲を省略すると、範囲に指定したセルがそのまま平均計算の対象になります。この例では範囲(B2:B30)の数値をそのまま平均するので、平均対象範囲は省略しています。
AVERAGEIF関数の実践的な使い方・応用例
基本がわかったところで、実務でよく使うパターンを見ていきましょう。
ワイルドカードで部分一致の条件を指定する
「東京」を含むすべての支店(東京支店、東京第二支店など)の売上平均を出したいときは、ワイルドカード * を使います。
=AVERAGEIF(A2:A20, "*東京*", B2:B20)
(アスタリスク)は「任意の文字列」を表します。"東京*" と書くことで、「東京」という文字がどこかに含まれるセルをすべて対象にします。
もうひとつ、?(クエスチョンマーク)は「任意の1文字」を表すワイルドカードです。
=AVERAGEIF(A2:A20, "??支店", B2:B20)
この式は「2文字 + 支店」のパターンに一致するデータ(東京支店、大阪支店など)だけで平均を出します。
0を除外して平均を求める
データの中に「未入力の代わりに0が入っている」ケースってありますよね。AVERAGE関数では0も計算に含まれてしまうため、平均が下がってしまいます。
そんなときは、AVERAGEIF関数で0を除外しましょう。
=AVERAGEIF(B2:B20, "<>0")
"<>0" は「0ではない」という条件です。これだけで、0以外のデータだけの平均が求められます。
セル参照で条件を動的に変える
条件を直接数式に書き込む代わりに、セル参照を使う方法も便利です。たとえば、D1セルに支店名を入力しておけば、その値を条件として使えます。
=AVERAGEIF(A2:A20, D1, B2:B20)
D1の値を「東京支店」から「大阪支店」に変えるだけで、計算結果が自動的に切り替わります。条件をいちいち数式の中で書き換える必要がないので、レポート作成の効率がぐっと上がりますよ。
よくあるエラーと対処法
AVERAGEIF関数を使っていてエラーが出たら、以下を確認してみてください。
#DIV/0! エラー
原因: 条件に一致するセルが1つもない場合に発生します。平均を計算するデータが0件になるため、0で割る計算になってしまうんですね。
対処法: まず検索条件が正しいか確認しましょう。スペルミスや余分なスペースが原因になっていることが多いです。条件に一致するデータがない可能性がある場合は、IFERROR関数で囲んでおくと安心です。
=IFERROR(AVERAGEIF(A2:A20, "東京支店", B2:B20), "該当データなし")
#VALUE! エラー
原因: 検索条件に255文字を超える文字列を指定した場合に発生します。通常の使い方ではまず起きませんが、長い文字列で条件を指定しているときは注意してください。
対処法: 検索条件を短くするか、SUMPRODUCT関数などの別の方法で対応しましょう。
範囲と平均対象範囲のサイズに注意
AVERAGEIF関数では、平均対象範囲の実際のサイズは「範囲」と同じサイズに調整されます。範囲がA2:A20(19行)なのに平均対象範囲をB2:B10(9行)と指定した場合、自動的にB2:B20として計算されます。
意図しない結果を防ぐために、範囲と平均対象範囲の行数は揃えておきましょう。
AVERAGEIF関数とAVERAGEIFS関数の違い
「AVERAGEIF」と「AVERAGEIFS」、名前がよく似ていますが、使い分けのポイントは条件の数です。
| 項目 | AVERAGEIF | AVERAGEIFS |
|---|---|---|
| 条件の数 | 1つだけ | 複数(最大127個) |
| 構文 | =AVERAGEIF(範囲, 条件, [平均対象範囲]) | =AVERAGEIFS(平均対象範囲, 条件範囲1, 条件1, …) |
| 引数の順番 | 範囲が最初 | 平均対象範囲が最初 |
| ワイルドカード | 使える | 使える |
注意したいのが、引数の順番が違うことです。AVERAGEIFは「範囲 → 条件 → 平均対象範囲」ですが、AVERAGEIFSは「平均対象範囲 → 条件範囲1 → 条件1 → …」と、平均対象範囲が最初に来ます。
条件が1つだけならAVERAGEIF、「東京支店 かつ 4月」のように複数の条件が必要ならAVERAGEIFSを使いましょう。AVERAGEIFSについてはこちらの記事で詳しく解説しています。
[[AVERAGEIFS関数で複数条件に一致するセルの平均を求める|AVERAGEIFS関数の使い方はこちら]]
また、条件付き集計の姉妹関数として、合計を求める[[【Excel】SUMIF関数を使って条件に合う数値を合計する|SUMIF関数]]もあわせて覚えておくと便利です。「条件をつけて平均を出す」のがAVERAGEIF、「条件をつけて合計を出す」のがSUMIFと覚えておけばOKです。
まとめ
この記事では、ExcelのAVERAGEIF関数について基本から応用まで解説しました。
ポイントをおさらいしておきましょう。
- AVERAGEIF関数は、条件に一致するセルだけの平均を求める関数
- 「範囲」で条件を判定し、「平均対象範囲」で平均を計算する
- 比較演算子(
>=80<>0など)やワイルドカード(*?)も条件に使える - 条件に一致するデータがないと #DIV/0! エラー になるので IFERROR で対策しておくと安心
- 条件が複数ある場合は AVERAGEIFS関数 にステップアップ
AVERAGEIF関数を使いこなせると、「この条件のデータだけの平均を見たい」という場面にすぐ対応できます。まずは支店別や点数別の平均計算から試してみてください。
