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
| 比較項目 | AVERAGEIF | AVERAGEIFS |
|---|---|---|
| 条件の数 | 1つだけ | 複数(最大127個) |
| 構文 | =AVERAGEIF(範囲, 条件, [平均対象範囲]) | =AVERAGEIFS(平均対象範囲, 条件範囲1, 条件1, ...) |
| 引数の順番 | 範囲が最初 | 平均対象範囲が最初 |
| 範囲サイズ制約 | 平均対象範囲は自動調整 | 条件範囲と平均対象範囲は同サイズ必須 |
最大の注意点は引数の順番が逆になることです。AVERAGEIFは「範囲→条件→平均対象範囲」の順番です。AVERAGEIFSは「平均対象範囲→条件範囲1→条件1→…」と平均対象範囲が先頭に来ます。
=AVERAGEIF(A2:A10, "東京支店", B2:B10)
=AVERAGEIFS(B2:B10, A2:A10, "東京支店")
条件が1つだけなら、どちらでも同じ結果を得られます。ただし引数の順番が違うので注意してください。
判断フロー(30秒で選べる)
迷ったときは次のフローで判断できます。
- 条件は1つだけ? → AVERAGEIF関数を使う
- 条件が2つ以上ある?(例:「東京支店」かつ「4月」) → AVERAGEIFS関数を使う
- 条件範囲と平均対象範囲のサイズが異なる? → 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列(売上合計) |
|---|---|---|
| 東京支店 | 600 | 1,800 |
| 大阪支店 | 367 | 1,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つあります。「何を求めたいか」で使い分けましょう。
何を集計したいかで選ぶ:合計 / 件数 / 平均
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つで出せると、集計作業がグッと効率的になりますよ。
この記事で紹介した関数・関連記事
- AVERAGE関数 — 全データの平均を求める
- AVERAGEIFS関数 — 複数条件で平均を求める
- SUMIF関数 — 条件付きで合計を求める
- SUMIFS関数 — 複数条件で合計を求める
- COUNTIF関数 — 条件に一致するセルを数える
- COUNTIFS関数 — 複数条件でセルを数える
