スプレッドシートのAVERAGEIF関数の使い方|条件付き平均

スポンサーリンク

スプレッドシートのAVERAGEIF関数の使い方|条件付き平均

「売上データから特定の支店だけの平均を出したい」「アンケートで未回答を除いた平均点を計算したい」。こういう場面、仕事でよくありますよね。

AVERAGE関数なら全体の平均を出せます。でも、条件で絞り込んだ平均となると手作業になりがちです。フィルターで絞り込んでから計算し直す、という手間は避けたいところです。

そんなときに使うのがAVERAGEIF関数です。この記事では基本の書き方から条件指定のパターン、よくあるエラーの対処法まで紹介します。

AVERAGEIF関数とは?

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

たとえば売上表で「東京支店の売上平均だけを知りたい」場合を考えてみましょう。A列に支店名、B列に売上金額が並んでいるとします。AVERAGEIF関数を使えば、A列から「東京」を探して該当行のB列を自動で平均してくれます。

NOTE

AVERAGEIF関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も高いので、ファイルのやり取りでも安心です。

条件なしのAVERAGE関数との違い

AVERAGE関数は範囲内のすべての数値を平均します。一方、AVERAGEIF関数は条件に一致した数値だけを平均します。

  • AVERAGE関数: 全データの平均(条件なし)
  • AVERAGEIF関数: 条件に合うデータだけの平均

全体平均と部門別平均の両方を出すなら、両方を組み合わせるのが一般的です。

SUMIF・COUNTIFとの構文対応関係

AVERAGEIF関数は、SUMIF関数COUNTIF関数と同じ「IF系関数ファミリー」です。構文のルールもほぼ共通しています。

関数名機能構文
SUMIF条件一致の合計=SUMIF(範囲, 条件, [合計範囲])
COUNTIF条件一致の件数=COUNTIF(範囲, 条件)
AVERAGEIF条件一致の平均=AVERAGEIF(範囲, 条件, [平均範囲])

引数の順番も同じです。SUMIF関数に慣れている方なら、合計が平均に変わるだけ、と覚えるとスムーズですよ。

AVERAGEIF関数の書き方(構文と引数)

基本構文

=AVERAGEIF(条件範囲, 条件, [平均範囲])

カッコの中に、検索する範囲・条件・平均する範囲を指定します。

引数の詳細と省略ルール

引数必須/任意説明
条件範囲必須条件を検索するセル範囲(例: A2:A20)
条件必須平均対象を絞り込む条件(文字列・数値・セル参照など)
平均範囲任意実際に平均するセル範囲(省略時は「条件範囲」を平均)

第3引数の「平均範囲」は省略できます。省略すると「条件範囲」そのものが平均の対象になります。ただし実務では「条件範囲」と「平均範囲」を分けて使うケースがほとんどです。

TIP

条件に文字列や比較演算子を指定するときは、必ずダブルクォーテーション "" で囲んでください。数値のみの場合は不要です。

基本的な使い方

売上データを例にAVERAGEIF関数を使ってみましょう。A列に支店名、B列に売上金額が入っています。

 A列(支店名)B列(売上金額)
2行目東京300
3行目大阪200
4行目東京500
5行目福岡150
6行目大阪350
7行目東京400

文字列条件で絞り込む(例:支店名・担当者名)

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

=AVERAGEIF(A2:A7,"東京",B2:B7)
  • A2:A7(条件範囲): ここから「東京」を探す
  • “東京”(条件): この文字列と一致するものが対象
  • B2:B7(平均範囲): 一致した行のB列を平均する

A2・A4・A7が「東京」なので、(300 + 500 + 400) / 3 = 400 が結果です。

平均対象範囲を別列に指定する

条件をセル参照にすると便利です。D2セルに支店名を入力し、数式で参照します。

=AVERAGEIF(A2:A7,D2,B2:B7)

D2を「大阪」に変えれば275、「福岡」に変えれば150と自動で切り替わります。集計用ダッシュボードを作るときに重宝しますよ。

条件指定パターン一覧

AVERAGEIF関数ではさまざまな条件を使えます。実務でよく使うパターンをまとめました。

比較演算子を使う(以上・未満・以外)

数値の大小で絞り込むには比較演算子を使います。演算子はダブルクォーテーションで囲んでください。

書き方意味使用例
">=300"300以上=AVERAGEIF(B2:B7,">=300")
">200"200より大きい=AVERAGEIF(B2:B7,">200")
"<=200"200以下=AVERAGEIF(B2:B7,"<=200")
"<>300"300以外=AVERAGEIF(B2:B7,"<>300")

セル参照と演算子を組み合わせることもできます。E2セルに基準値が入っている場合は次のように書きます。

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

演算子を "" で囲み、& でセル参照を連結するのがポイントです。

ワイルドカードで部分一致(*・?)

部分一致で検索したい場合はワイルドカードが使えます。

記号意味使用例マッチする値
*任意の文字列(0文字以上)"営業*"営業部、営業1課
?任意の1文字"?月"1月、2月
~**そのものを検索"~*印"*印

たとえば「営業」で始まる部署の売上平均を出すには次のように書きます。

=AVERAGEIF(A2:A100,"営業*",B2:B100)

部門名にサブカテゴリがある場合に便利です。

0を除外して正確な平均を出す

実務でありがちなのが「未入力セルに0を入れてしまう」運用です。この場合、0が平均計算に含まれてしまい、実際よりも平均が下がります。

0を除外するには "<>0" を条件にします。

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

たとえばテストの点数データで未受験者を0にしている場合、この書き方で受験者だけの平均が出せます。条件範囲と平均範囲が同じなので、第3引数は省略できますよ。

空白セルを除外する

AVERAGEIF関数は空白セルを自動で計算から除外します。ただし、「条件範囲に空白がある行を除外したい」場合は "<>" を使います。

=AVERAGEIF(A2:A20,"<>",B2:B20)

"<>" は「空白でない」という意味です。担当者名が未入力の行を除外したいケースで活用できます。

実務での活用例

基本がわかったところで、仕事でよく使うパターンを紹介します。

部門別・担当者別の売上平均

A列に担当者名、B列に売上金額が入ったデータから、担当者ごとの売上平均を出します。

=AVERAGEIF($A$2:$A$100,D2,$B$2:$B$100)

範囲と平均範囲を絶対参照($付き)にしておけば、数式を下にコピーするだけで全員分の集計が完成します。D列に担当者名を並べたサマリー表を作るときに便利ですよ。

アンケート評点の集計(無回答を除く)

アンケートで「5段階評価」を集計する場合、無回答を0にしているとAVERAGE関数では正確な平均が出ません。

=AVERAGEIF(C2:C100,"<>0")

0を除外すれば、実際に回答した人だけの平均評点を算出できます。さらに設問ごとの条件も加えたい場合は、後述のAVERAGEIFS関数を検討してみてください。

よくあるエラーと対処法

AVERAGEIF関数で思った結果にならないケースをまとめました。

#DIV/0! が出るとき

AVERAGEIF関数で最もよく見るエラーが #DIV/0! です。条件に一致するセルが1つもないときに発生します。平均を計算するための分母が0になるのが原因です。

対処法は2つあります。

方法1: IFERRORで代替値を表示する

=IFERROR(AVERAGEIF(A2:A10,"東京",B2:B10), 0)

エラー時に0を返します。「該当なし」のような文字列にすることもできます。

方法2: IF+COUNTIFで事前チェックする

=IF(COUNTIF(A2:A10,"東京")>0, AVERAGEIF(A2:A10,"東京",B2:B10), "該当なし")

COUNTIF関数で該当件数を先にチェックします。0件なら「該当なし」を表示し、1件以上ならAVERAGEIF関数を実行します。エラーの原因を明示したい場合はこちらが丁寧です。

結果が0になる・期待値と合わないとき

原因症状対処法
余分なスペース「東京 」と「東京」が不一致TRIM関数でスペースを除去
全角・半角の不一致「ABC」と「ABC」が不一致ASC関数またはJIS関数で統一
文字列型の数値数値に見えるが左揃えVALUE関数で数値に変換
範囲指定のずれ条件範囲と平均範囲の行がずれている範囲の先頭行を揃える
引用符忘れ=AVERAGEIF(A:A,東京,B:B)文字列は "東京" と囲む

TIP

期待した値にならない場合は、まずCOUNTIF関数で条件一致の件数を確認してみてください。=COUNTIF(A2:A10,"東京") が0なら、データ側に問題があります。

似た関数との使い分け

条件が複数なら→AVERAGEIFSにアップグレード

条件を2つ以上指定したい場合はAVERAGEIFS関数を使います。ここで注意したいのが引数の順番が逆転することです。

比較項目AVERAGEIFAVERAGEIFS
条件の数1つだけ複数(最大127個)
引数の順番条件範囲 → 条件 → 平均範囲平均範囲 → 条件範囲1 → 条件1 → ...
ワイルドカード使える使える
=AVERAGEIF(A2:A10, "東京", C2:C10)
=AVERAGEIFS(C2:C10, A2:A10, "東京", B2:B10, "営業部")

AVERAGEIF関数は「条件範囲 → 条件 → 平均範囲」の順です。一方、AVERAGEIFS関数は「平均範囲」が先頭に来ます。この引数順序の逆転がAVERAGEIFS関数を使い始めるときの最大の落とし穴です。

ちょっとややこしく見えますが、やっていることはシンプルです。「平均範囲が先に来る」とだけ覚えておけば大丈夫ですよ。

SUMIF関数とSUMIFS関数の関係もまったく同じパターンです。

ExcelのAVERAGEIFとの違い(互換性)

AVERAGEIF関数の基本的な動作はExcelと同じです。ほぼ同じ感覚で使えます。

項目GoogleスプレッドシートExcel
基本動作同じ同じ
ワイルドカード* ? 使用可* ? 使用可
比較演算子同じ書き方同じ書き方
空白セルの扱い計算から除外計算から除外
TRUE/FALSEの扱い平均に含まない平均に含まない
大文字小文字の区別区別しない区別しない

大きな違いはありません。ExcelのAVERAGEIF関数に慣れている方は、同じ書き方でそのまま使えますよ。

まとめ

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

  • AVERAGEIF関数は「条件を1つ指定して平均する」関数
  • 書き方: =AVERAGEIF(条件範囲, 条件, [平均範囲])
  • 比較演算子(>= / <> など)で数値条件を指定できる
  • ワイルドカード(* / ?)で部分一致の平均ができる
  • "<>0" で0を除外すれば正確な平均が出せる
  • #DIV/0! はIFERRORかIF+COUNTIFで回避
  • 条件が2つ以上ならAVERAGEIFS関数に切り替え(引数の順番に注意)

まずは基本の =AVERAGEIF(条件範囲, "条件", 平均範囲) から試してみてください。条件付きの平均が1つの数式で出せると、レポート作成がグッと楽になりますよ。


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

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