「佐藤さんの6月の売上だけを平均したい」のように、複数の条件を同時に満たすデータだけを対象に平均を出したいとき、結論から言うとAVERAGEIFS関数を使えば、条件を好きなだけ重ねながら、条件に合う数値だけの平均を数式1つで求められます。この記事では基本の書き方、単一条件用のAVERAGEIFとの違い、日付範囲を条件に加える書き方まで解説します。
AVERAGEIFSで複数条件の平均を計算する基本の書き方
基本の形は次の通りです。
=AVERAGEIFS(平均範囲,条件範囲1,条件1,条件範囲2,条件2,...)
「条件範囲1が条件1を満たし、かつ条件範囲2が条件2を満たす」というように、指定したすべての条件をAND条件で満たす行だけを対象に、「平均範囲」の数値の平均を返す関数です。条件のペアは3組、4組と好きなだけ追加できます。
なぜAVERAGEIFではなくAVERAGEIFSなのか
Excelには条件が1つだけのAVERAGEIF関数もありますが、こちらは条件範囲と条件を1組しか指定できません。「担当者が佐藤」かつ「6月」のように条件を2つ以上重ねたい場合はAVERAGEIFSが必要です。なおAVERAGEIFSは平均範囲を最初の引数に書く点で、SUMIFSで複数条件のOR集計をする方法で紹介しているSUMIFS(合計範囲が先頭)と同じ引数の並びなので、そちらを理解していれば書き方に迷いません(条件範囲が先に来るAVERAGEIFとは並びが逆になる点に注意してください)。
具体例:担当者×期間で売上の平均を求める
次のような売上データ(A1:C9)があるとします。A列が日付、B列が担当者、C列が金額です。
| A(日付) | B(担当者) | C(金額) | |
|---|---|---|---|
| 2 | 2026/6/3 | 佐藤 | 12000 |
| 3 | 2026/6/10 | 鈴木 | 8500 |
| 4 | 2026/6/15 | 佐藤 | 15000 |
| 5 | 2026/6/20 | 田中 | 9800 |
| 6 | 2026/7/2 | 鈴木 | 11000 |
| 7 | 2026/7/8 | 佐藤 | 13500 |
| 8 | 2026/7/15 | 高橋 | 7200 |
| 9 | 2026/7/22 | 田中 | 13500 |
B列(担当者)が「佐藤」で、A列(日付)が6月中の行だけを対象に、C列(金額)の平均を求めたい場合、次のように書きます。
=AVERAGEIFS(C2:C9,B2:B9,"佐藤",A2:A9,">="&DATE(2026,6,1),A2:A9,"<="&DATE(2026,6,30))
B列(担当者)が「佐藤」で、かつA列(日付)が2026年6月1日から6月30日までの行だけを対象に、C列(金額)を平均する、という意味の数式です。
該当するのは3行目(6/3・12,000円)と4行目(6/15・15,000円)の2件なので、平均は(12,000+15,000)÷2で13,500円になります。
日付範囲は「以上」と「以下」の2条件で挟む
AVERAGEIFSやSUMIFSには「範囲」を直接指定する専用の書き方がないため、上記のように同じA列(日付)に対して「”>=”&DATE(…)」(開始日以上)と「”<=”&DATE(…)」(終了日以下)の2つの条件を重ねることで、期間を絞り込みます。
よくあるエラー・注意点
- 該当する行が1つもないと#DIV/0!エラーになる: 条件に一致する行が0件だと、平均を出す対象がないため#DIV/0!エラーになります。条件を指定しすぎていないか確認しましょう。
- 平均範囲と条件範囲の行数を揃える: 平均範囲(C2:C9)と各条件範囲(A2:A9、B2:B9)の行数が一致していないと、#VALUE!エラーになります。
- 日付を文字列で条件指定しない: DATE関数を使わずに”2026/6/1″のような文字列をそのまま条件にすると、環境によって認識されないことがあります。DATE(年,月,日)を使うのが確実です。
まとめ
AVERAGEIFS関数は条件をいくつ重ねても平均範囲の数値だけを正確に平均できるため、担当者別・期間別など複数の切り口を組み合わせた分析に向いています。同じデータから期間で合計を求めたい場合はSUMIFで日付範囲を指定して集計する方法、順位付けをしたい場合はRANK関数で同順位を考慮した順位付けをする方法もあわせてご覧ください。条件付き集計の考え方をさらに深めたい方は条件付きで中央値(MEDIAN)を計算する方法も参考になります。





