ExcelのAVERAGEIF関数|条件付き平均の使い方

スポンサーリンク

AVERAGEIF関数とは

AVERAGEIF関数(読み方:アベレージイフ)は、指定した条件に一致するセルだけを対象に平均値を求める関数です。「AVERAGE(平均)」と「IF(もし)」を組み合わせた名前で、「もし条件に合えば平均する」という意味になっています。

「支店ごとの売上平均を出したい」「80点以上の成績だけで平均を計算したい」。Excelでこんな場面に遭遇したことはありませんか?

全体の平均ならAVERAGE関数で求められます。でも、条件で絞り込んだ平均を手作業で計算するのは大変ですよね。データが増えるたびに計算し直すのも非効率です。

そんなときに使えるのがAVERAGEIF関数です。この記事では、基本の書き方からワイルドカード、実務シナリオ、よくあるエラーの対処法まで解説します。

対応バージョン

AVERAGEIF関数はExcel 2007以降すべてのバージョンで使えます。Microsoft 365、Excel 2024/2021/2019/2016、Excel for the Webに対応しています。

基本構文と3つの引数

=AVERAGEIF(範囲, 検索条件, [平均対象範囲])

カッコの中に3つの引数を指定します。

引数必須/任意説明
範囲必須条件を判定するセル範囲(例:A2:A20)
検索条件必須平均に含めるかどうかの条件(文字列・数値・比較演算子など)
平均対象範囲任意実際に平均を計算するセル範囲。省略すると「範囲」を平均対象にする

ポイントは「条件を判定する場所」と「平均を計算する場所」を分けられることです。A列の支店名で条件を判定して、B列の売上で平均を計算する、という使い方ができますよ。

TIP

平均対象範囲が範囲と異なるサイズの場合、左上セルを基点に範囲と同じサイズが自動適用されます。意図しない結果を防ぐために、行数は揃えておきましょう。

AVERAGE関数との違い

AVERAGE関数は「全データの平均」、AVERAGEIF関数は「条件付きの平均」です。

比較項目AVERAGE関数AVERAGEIF関数
条件指定できないできる
用途全体の平均条件に合うデータだけの平均
引数の数1つ以上(数値範囲)2〜3つ(範囲・条件・平均対象範囲)

「全員の平均点」ならAVERAGE関数、「合格者だけの平均点」ならAVERAGEIF関数と覚えておけばOKです。

AVERAGEIF関数の基本的な使い方

ここからは、サンプルデータを使って実際に試してみましょう。

文字条件で平均を出す(例:東京支店の売上平均)

次のような売上データがあるとします。

 A列(支店名)B列(売上)
2行目東京支店500
3行目大阪支店300
4行目東京支店700
5行目名古屋支店400
6行目東京支店600

「東京支店」の売上平均を求めるには次のように入力します。

=AVERAGEIF(A2:A6, "東京支店", B2:B6)
  • A2:A6(範囲):ここから「東京支店」を探す
  • “東京支店”(検索条件):この文字列と一致する行が対象
  • B2:B6(平均対象範囲):一致した行のB列で平均を計算

東京支店はA2・A4・A6の3行です。(500 + 700 + 600) ÷ 3 = 600 が結果になります。

文字列の条件は必ずダブルクォーテーションで囲んでください。囲まないとエラーになりますよ。

数値条件で平均を出す(例:80点以上の平均点)

テストの点数で「80点以上」だけの平均を求めたい場合です。B列に点数が入っているとします。

 B列(点数)
2行目95
3行目60
4行目85
5行目70
6行目90
=AVERAGEIF(B2:B6, ">=80")

比較演算子を使う場合も、条件全体をダブルクォーテーションで囲みます。80以上の値は95・85・90の3つなので、(95 + 85 + 90) ÷ 3 = 90 が結果です。

平均対象範囲を省略すると、範囲そのものが計算対象になります。この例ではB列の数値をそのまま平均するので省略でOKです。

使える比較演算子をまとめておきます。

演算子意味書き方の例
>より大きい">100"
<より小さい"<50"
>=以上">=80"
<=以下"<=1000"
<>等しくない"<>0"
=等しい"=100"

セル参照と組み合わせるときは & で連結します。E2セルに基準値が入っている場合はこうです。

=AVERAGEIF(B2:B6, ">="&E2)

ワイルドカードで部分一致検索する

「東京」を含むすべての支店(東京支店、東京第二支店など)をまとめて集計したい場合があります。ワイルドカードを使えば部分一致で条件を指定できます。

=AVERAGEIF(A2:A20, "*東京*", B2:B20)

*(アスタリスク)は「任意の文字列(0文字以上)」を表します。?(クエスチョンマーク)は「任意の1文字」です。

記号意味使用例マッチする値
*任意の文字列"東京"東京支店、東京第二支店
?任意の1文字"??支店"東京支店、大阪支店
~** そのものを検索"~*印"*印
~?? そのものを検索"~?マーク"?マーク

TIP

データに *? が含まれている場合は、チルダ ~ を前に付けると記号そのものを検索できますよ。

AVERAGEIF vs AVERAGEIFS:どちらを使う?

AVERAGEIF関数とよく混同されるのがAVERAGEIFS関数です。名前が似ていますが、使い分けはシンプルです。

条件が1つ → AVERAGEIF、複数 → AVERAGEIFS

比較項目AVERAGEIFAVERAGEIFS
条件の数1つだけ複数(最大127個)
構文=AVERAGEIF(範囲, 条件, [平均対象範囲])=AVERAGEIFS(平均対象範囲, 条件範囲1, 条件1, ...)
引数の順番範囲が最初平均対象範囲が最初
範囲サイズ制約平均対象範囲は自動調整条件範囲と平均対象範囲は同サイズ必須

最大の注意点は引数の順番が逆になることです。AVERAGEIFは「範囲→条件→平均対象範囲」の順番です。AVERAGEIFSは「平均対象範囲→条件範囲1→条件1→…」と平均対象範囲が先頭に来ます。

=AVERAGEIF(A2:A10, "東京支店", B2:B10)
=AVERAGEIFS(B2:B10, A2:A10, "東京支店")

条件が1つだけなら、どちらでも同じ結果を得られます。ただし引数の順番が違うので注意してください。

判断フロー(30秒で選べる)

迷ったときは次のフローで判断できます。

  1. 条件は1つだけ? → AVERAGEIF関数を使う
  2. 条件が2つ以上ある?(例:「東京支店」かつ「4月」) → AVERAGEIFS関数を使う
  3. 条件範囲と平均対象範囲のサイズが異なる? → AVERAGEIF関数のみ自動調整に対応

実務では「支店名 × 月」のように複数条件を使うケースが多いです。まずAVERAGEIFで基本を身につけてから、必要に応じてAVERAGEIFS関数にステップアップしてみてください。

実務3シナリオで使いこなす

ここからは、実際の業務を想定した3つのシナリオを紹介します。

シナリオ1:支店別平均 × SUMIF で達成率を一覧化する

支店ごとの売上平均と合計を組み合わせて、達成率一覧を作るパターンです。

サンプルデータ(売上表)

 A列(支店名)B列(売上)
2行目東京支店500
3行目大阪支店300
4行目東京支店700
5行目大阪支店450
6行目東京支店600
7行目大阪支店350

D列に支店名、E列に平均売上、F列に売上合計を出します。

=AVERAGEIF($A$2:$A$7, D2, $B$2:$B$7)
=SUMIF($A$2:$A$7, D2, $B$2:$B$7)

SUMIF関数(条件付き合計を求める関数)と組み合わせると集計表が作れます。範囲を絶対参照($付き)にしておけば、数式を下にコピーするだけで全支店分が完成しますよ。

集計結果

D列(支店名)E列(平均売上)F列(売上合計)
東京支店6001,800
大阪支店3671,100

東京支店の平均:(500 + 700 + 600) ÷ 3 = 600。大阪支店の平均:(300 + 450 + 350) ÷ 3 ≒ 367。このように平均と合計を並べると、支店間の比較がしやすくなります。

シナリオ2:評価シートで合格者だけの平均点を出す

テストの評価シートで「合格(70点以上)」の受験者だけの平均点を求めるパターンです。

サンプルデータ(テスト結果)

 A列(氏名)B列(点数)
2行目田中85
3行目鈴木55
4行目佐藤92
5行目山田68
6行目高橋78
=AVERAGEIF(B2:B6, ">=70")

70点以上は田中(85)・佐藤(92)・高橋(78)の3名です。(85 + 92 + 78) ÷ 3 = 85 が結果になります。

エラー対策として、IFERROR関数で囲んでおくと安心です。条件に一致するデータが0件の場合、#DIV/0!エラーが出るためです。

=IFERROR(AVERAGEIF(B2:B6, ">=70"), "該当者なし")

シナリオ3:0を除外して正確な平均を求める

「未入力の代わりに0が入っている」データで正確な平均を出すパターンです。AVERAGE関数だと0も分母に含まれるため、平均が不正確になります。

サンプルデータ

 B列(売上)
2行目500
3行目0
4行目300
5行目0
6行目400

AVERAGE関数の場合:(500 + 0 + 300 + 0 + 400) ÷ 5 = 240
AVERAGEIF関数の場合:

=AVERAGEIF(B2:B6, "<>0")

"<>0" は「0以外」という条件です。0を除いた3つの値で計算するので、(500 + 300 + 400) ÷ 3 = 400 が結果になります。

なお、空白セルはAVERAGEIF関数で自動的に無視されます。分母にもカウントされないので、空白とゼロの扱いは区別しておきましょう。

IF系3関数の比較表(SUMIF・COUNTIF・AVERAGEIF)

条件付き集計の関数は3つあります。「何を求めたいか」で使い分けましょう。

何を集計したいかで選ぶ:合計 / 件数 / 平均

  • 合計を出したいSUMIF関数
  • 件数を数えたいCOUNTIF関数(条件に一致するセルの個数を数える関数)
  • 平均を出したい → AVERAGEIF関数

3つとも「条件を1つ指定して集計する」という点は共通です。違いは「集計する内容」だけですよ。

一覧表で一目確認

関数名用途構文第3引数
SUMIF条件付き合計=SUMIF(範囲, 条件, [合計範囲])合計範囲(任意)
COUNTIF条件付き件数=COUNTIF(範囲, 条件)なし
AVERAGEIF条件付き平均=AVERAGEIF(範囲, 条件, [平均対象範囲])平均対象範囲(任意)

COUNTIFだけ第3引数がないのがポイントです。「条件に合うセルの個数」を数えるだけなので、合計範囲や平均対象範囲は不要です。

複数条件が必要な場合は、それぞれの「S」付き版(SUMIFS関数COUNTIFS関数AVERAGEIFS関数)に切り替えてください。

よくあるエラーと対処法

AVERAGEIF関数でエラーが出たら、まず以下の3パターンを確認してみてください。

#DIV/0! が出るとき(条件に一致するデータが0件)

AVERAGEIF関数で最もよく遭遇するエラーです。条件に一致するセルが1つもない場合に発生します。平均を計算するデータが0件なので、0で割る計算になってしまうんですね。

よくある原因:

  • 条件の文字列にスペルミスや余分なスペースがある
  • 範囲が空白セルやテキスト値のみで構成されている

対処法: IFERROR関数で囲んでおけば、エラーの代わりに任意の値を表示できます。

=IFERROR(AVERAGEIF(A2:A20, "東京支店", B2:B20), 0)

第2引数を 0 にすればゼロ表示、"該当なし" にすればメッセージ表示になります。条件に一致するデータがない可能性がある場合は、あらかじめ仕込んでおくと安心ですよ。

条件範囲と平均範囲のサイズが合わないとき

AVERAGEIF関数では、平均対象範囲は左上セルを基点に範囲と同じサイズに自動調整されます。そのため「範囲がA2:A20なのに、平均対象範囲はB2:B10」と指定しても、内部的にはB2:B20として処理されます。

意図しない結果になるケースがあるので、範囲と平均対象範囲の行数は揃えておくのが基本です。

なお、AVERAGEIFS関数では条件範囲と平均対象範囲が同じサイズであることが必須です。サイズが異なるとエラーになるので注意してください。

テキスト条件の引用符を忘れたとき

文字列条件や比較演算子をダブルクォーテーションで囲み忘れると、正しく動作しません。

× =AVERAGEIF(A2:A20, 東京支店, B2:B20)
○ =AVERAGEIF(A2:A20, "東京支店", B2:B20)

× =AVERAGEIF(B2:B20, >=80)
○ =AVERAGEIF(B2:B20, ">=80")

数値そのもの(例:80)を条件にする場合は引用符なしでもOKです。ただし比較演算子を含む条件は必ずダブルクォーテーションで囲んでください。

まとめ

ExcelのAVERAGEIF関数のポイントをおさらいしましょう。

  • AVERAGEIF関数は「条件に合うデータだけの平均」を求める関数
  • 書き方:=AVERAGEIF(範囲, 検索条件, [平均対象範囲])
  • 比較演算子(">=80" "<>0" など)やワイルドカード(* ?)で柔軟に条件を指定できる
  • 0を除外した正確な平均は =AVERAGEIF(範囲, "<>0") で求められる
  • 条件が2つ以上なら AVERAGEIFS関数に切り替え
  • #DIV/0! エラー対策には IFERROR関数で囲んでおくと安心

まずは「特定の支店の平均売上」や「合格者の平均点」など、身近なデータから試してみてください。条件付きの平均を数式1つで出せると、集計作業がグッと効率的になりますよ。


この記事で紹介した関数・関連記事

タイトルとURLをコピーしました