スプレッドシートのAVERAGEIFS関数の使い方|複数条件平均
「営業部の4月の売上平均だけ出したい」「評価がB以上で、かつ出席率80%以上の人だけで平均点を計算したい」。条件が2つ以上になると、どう数式を書けばいいか迷いますよね。
AVERAGEIF関数なら条件を1つ指定して平均を出せます。でも、条件が2つ以上になると対応できません。フィルタで手作業するのは手間がかかります。
そんなときに使うのがAVERAGEIFS関数です。この記事では基本の書き方からAVERAGEIFとの引数順の違い、日付条件、エラー対処法まで紹介します。
AVERAGEIFS関数とは?
AVERAGEIFS関数(読み方: アベレージイフエス関数)は、複数の条件をすべて満たすデータだけを平均する関数です。「AVERAGE(平均)」+「IF(もし)」+「S(複数形)」が名前の由来です。「複数の”もし”で平均する」という意味になっています。
たとえば売上表で「営業部の、4月の売上平均だけを知りたい」場合を考えてみましょう。A列に部署名、B列に月、C列に売上金額が並んでいるとします。AVERAGEIFS関数を使えば、A列が「営業部」かつB列が「4月」の行だけを自動で平均してくれます。
AVERAGEIFS関数にできることをまとめると、次のとおりです。
- 2つ以上の条件を同時に指定して平均する(AND条件)
- 比較演算子で「以上・以下」「等しくない」を条件にできる
- ワイルドカードで部分一致の平均ができる
- 日付の期間を区切って平均を出せる
- 条件のペアは最大127組まで追加できる
「条件を2つ以上つけて平均してね」とお願いする関数です。
NOTE
AVERAGEIFS関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。
AVERAGEIFS関数の書き方(構文と引数)
基本構文
=AVERAGEIFS(平均範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], ...)
カッコの中に、平均する範囲・条件範囲・条件をセットで指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 平均範囲 | 必須 | 実際に平均を計算するセル範囲 |
| 条件範囲1 | 必須 | 1つ目の条件を判定するセル範囲 |
| 条件1 | 必須 | 1つ目の条件(例: “営業部”) |
| 条件範囲2 | 任意 | 2つ目の条件を判定するセル範囲 |
| 条件2 | 任意 | 2つ目の条件 |
条件のペア(条件範囲と条件)は最大127組まで追加できます。
AVERAGEIF関数との引数順の違い(最重要ポイント)
AVERAGEIFS関数を使い始めるとき、一番つまずきやすいのが引数の順番です。AVERAGEIF関数とAVERAGEIFS関数を並べて比較してみましょう。
=AVERAGEIF(条件範囲, 条件, 平均範囲)
=AVERAGEIFS(平均範囲, 条件範囲1, 条件1, ...)
| 比較項目 | AVERAGEIF | AVERAGEIFS |
|---|---|---|
| 平均範囲の位置 | 最後(第3引数) | 最初(第1引数) |
| 条件の数 | 1つだけ | 複数(最大127組) |
| 平均範囲の省略 | 省略可 | 省略不可 |
AVERAGEIF関数は「平均範囲」が最後です。AVERAGEIFS関数は「平均範囲」が最初に来ます。逆なので混同しやすいポイントです。
覚え方のコツは「AVERAGEIFS関数は平均範囲が先頭」です。条件を何組でも追加できるよう、平均範囲を先に固定して、残りを条件ペアの繰り返しにしたわけですね。
TIP
この引数順序の違いはSUMIFS関数でも同じです。SUMIF→SUMIFSでも合計範囲が最後から最初に移動します。「IFS系は対象範囲が先頭」と覚えておくと安心です。
AVERAGEIFS関数の基本的な使い方
ここからは、次の売上データを使って具体的な使い方を見ていきます。
| A列(部署) | B列(月) | C列(売上) | |
|---|---|---|---|
| 2行目 | 営業部 | 4月 | 350,000 |
| 3行目 | 営業部 | 5月 | 420,000 |
| 4行目 | 総務部 | 4月 | 180,000 |
| 5行目 | 総務部 | 5月 | 200,000 |
| 6行目 | 営業部 | 4月 | 310,000 |
| 7行目 | 企画部 | 4月 | 280,000 |
2つの条件で平均を求める
「営業部」の「4月」の売上平均を求めたい場合はこう書きます。
=AVERAGEIFS(C2:C7, A2:A7, "営業部", B2:B7, "4月")
- C2:C7(平均範囲): ここの数値を平均する
- A2:A7(条件範囲1): ここから「営業部」を探す
- “営業部”(条件1): この文字列と一致する行が対象
- B2:B7(条件範囲2): ここから「4月」を探す
- “4月”(条件2): この文字列と一致する行が対象
A列が「営業部」かつB列が「4月」の行だけが対象です。350,000と310,000の平均で 330,000 が返ります。
比較演算子で数値条件を指定する
「営業部」かつ「売上が300,000以上」の平均を求めたい場合です。
=AVERAGEIFS(C2:C7, A2:A7, "営業部", C2:C7, ">=300000")
比較演算子を使う場合は、条件全体をダブルクォーテーションで囲むのがポイントです。
| 演算子 | 意味 | 書き方の例 |
|---|---|---|
>= | 以上 | ">=300000" |
<= | 以下 | "<=200000" |
> | より大きい | ">300000" |
< | より小さい | "<300000" |
<> | 等しくない | "<>0" |
セル参照と演算子を組み合わせる場合は & で連結します。
=AVERAGEIFS(C2:C7, A2:A7, "営業部", C2:C7, ">="&E1)
セル参照で条件を動的に変える
条件をセル参照にすると便利です。E1セルに部署名、F1セルに月を入力しておきます。
=AVERAGEIFS(C2:C7, A2:A7, E1, B2:B7, F1)
セルの値を変えるだけで計算結果が切り替わります。レポートやダッシュボードを作るときに活用してみてください。
AVERAGEIFS関数の実践的な使い方・応用例
基本がわかったところで、実務でよく使うパターンを見ていきましょう。
日付範囲を指定して平均を求める
「2026年4月1日〜6月30日」のように期間を絞りたいときは、同じ条件範囲に2つの条件を指定します。
=AVERAGEIFS(C2:C100, A2:A100, ">="&DATE(2026,4,1), A2:A100, "<="&DATE(2026,6,30))
ポイントは、DATE関数と & 演算子で条件を組み立てることです。">=2026/4/1" と直接書くと地域設定によっては正しく動かないことがあります。DATE関数を使うのが確実です。
同じ条件範囲(A2:A100)に「4/1以上」と「6/30以下」の2条件を指定しています。これがAVERAGEIFS関数の便利な点です。
ワイルドカードで部分一致条件
「東京」を含むすべての支店の売上平均を出したいときは、ワイルドカード * を使います。
=AVERAGEIFS(C2:C50, A2:A50, "*東京*", B2:B50, "4月")
| 記号 | 意味 | 使用例 | マッチする値 |
|---|---|---|---|
* | 任意の文字列(0文字以上) | "東京" | 東京支店、東京第二支店 |
? | 任意の1文字 | "?月" | 4月、5月 |
~* | *そのものを検索 | "~*印" | *印 |
0を除外して正確な平均を求める
データに「未入力の代わりに0が入っている」ケースってありますよね。0も計算に含めると平均が下がってしまいます。
=AVERAGEIFS(C2:C50, A2:A50, "営業部", C2:C50, "<>0")
平均範囲と同じ範囲(C2:C50)を条件範囲にして、"<>0" と指定するのがコツです。未入力セルに0を入れる運用をしている場合に、正確な平均を出せます。
不一致条件で特定データを除外する
「総務部以外」の「4月」の平均を出したい場合は <> を使います。
=AVERAGEIFS(C2:C50, A2:A50, "<>総務部", B2:B50, "4月")
特定の部署やカテゴリを除外して平均を取りたいときに便利です。
よくあるエラーと対処法
AVERAGEIFS関数でエラーが出たら、次の表を参考に対処してみてください。
| エラー | 原因 | 対処法 |
|---|---|---|
| #DIV/0! | 条件に一致するデータが1つもない | 条件のスペルミス・余分なスペースを確認。IFERRORで囲む |
| #VALUE! | 条件範囲と平均範囲のサイズが不一致 | すべての範囲を同じ行数・列数に揃える |
| #VALUE! | 条件の文字数が255文字を超えている | 条件を短くするか、セル参照に変更 |
| 予想より低い値 | 0が平均に含まれている | "<>0" 条件を追加して0を除外 |
| 予想と違う値 | 全角・半角やスペースの不一致 | TRIM関数やASC関数でデータを統一 |
#DIV/0!エラーをIFERRORで防ぐ
条件に一致するデータがないと、AVERAGEIFS関数は#DIV/0!エラーを返します。平均を計算するための分母が0になるのが原因です。レポートにエラーが出るのは避けたいですよね。
IFERROR関数で囲んでおけば安心です。
=IFERROR(AVERAGEIFS(C2:C50, A2:A50, "営業部", B2:B50, "4月"), "該当データなし")
エラーの代わりに「該当データなし」と表示されます。0を返したい場合は "該当データなし" の部分を 0 に変えてください。
結果が0になる・合わないときのデバッグ手順
0になったときは、次の手順で原因を切り分けましょう。
1. 条件を1つだけにして試す
=AVERAGEIFS(C2:C7, A2:A7, "営業部")
これで値が返れば、2つ目以降の条件に問題があります。
2. COUNTIFS関数で件数を確認する
=COUNTIFS(A2:A7, "営業部", B2:B7, "4月")
0件なら条件に合うデータがありません。スペースや全角半角を確認しましょう。
似た関数との違い・使い分け
条件付きの集計関数はAVERAGEIFS以外にもあります。「どの関数を使えばいいの?」と迷ったら次の表を参考にしてください。
| 関数名 | 用途 | 条件の数 | 引数の順番 |
|---|---|---|---|
| AVERAGEIF | 条件付き平均 | 1つ | 条件範囲 → 条件 → 平均範囲 |
| AVERAGEIFS | 複数条件付き平均 | 最大127組 | 平均範囲 → 条件範囲 → 条件 |
| SUMIFS | 複数条件付き合計 | 最大127組 | 合計範囲 → 条件範囲 → 条件 |
| COUNTIFS | 複数条件付きカウント | 最大127組 | 条件範囲 → 条件 |
| AVERAGE | 全体の平均 | なし | 数値 or 範囲 |
SUMIFS・COUNTIFS関数との構文対応関係
SUMIFS・COUNTIFS・AVERAGEIFSは「複数条件シリーズ」です。構文がほぼ同じで、違いは「結果として何を返すか」だけです。
構文に慣れてしまえば、目的に応じて関数名を差し替えるだけで対応できますよ。
Excelとの違い
AVERAGEIFS関数の基本的な動作はExcelと同じです。
| 項目 | Googleスプレッドシート | Excel |
|---|---|---|
| 基本動作 | 同じ | 同じ |
| 条件ペアの上限 | 最大127組 | 最大127組 |
| ワイルドカード | * ? 使用可 | * ? 使用可 |
| 大文字小文字の区別 | 区別しない | 区別しない |
大きな違いはありません。ExcelのAVERAGEIFS関数に慣れている方は、同じ書き方で使えますよ。
まとめ
AVERAGEIFS関数のポイントをおさらいしましょう。
- AVERAGEIFS関数は「複数の条件をすべて満たすデータの平均」を求める関数
- 書き方:
=AVERAGEIFS(平均範囲, 条件範囲1, 条件1, ...) - 平均範囲が先頭に来る(AVERAGEIF関数とは逆)
- 比較演算子やワイルドカードも条件に使える
- 日付条件はDATE関数と
&演算子で組み立てる "<>0"で0を除外すれば正確な平均が出せる- 条件一致なしの #DIV/0!エラー はIFERROR関数で対策
- 条件が1つだけならAVERAGEIF関数、合計ならSUMIFS関数
まずは =AVERAGEIFS(平均範囲, 条件範囲, "条件") の基本形から試してみてください。条件が増えても、条件範囲と条件のペアを追加するだけです。
