複数の条件をすべて満たす行だけを対象に平均を出したいとき、力を発揮するのがAVERAGEIFS関数です。草野球の成績管理表で「特定の対戦相手×自宅開催」のときだけの平均得点を求める場面を例に、使い方と内部のしくみを解説します。
AVERAGEIFS関数とは
複数の条件をすべて満たす行だけを絞り込み、その中の数値だけを平均する関数です。前回のAVERAGEIFが「条件は1つだけ」だったのに対し、AVERAGEIFSは「対戦相手も、開催地も、両方一致する試合だけ」のように条件を重ねて絞り込めるのが特徴です。
基本の書式はこうです。
=AVERAGEIFS(平均対象範囲, 条件範囲1, 条件1, 条件範囲2, 条件2, …)
「平均対象範囲」を先頭に置き、そのあとに「条件範囲と条件」のペアを必要な数だけ並べていきます。条件はすべてAND(かつ)で結ばれ、全部の条件に一致した行だけが平均の計算対象になります。
成績管理表での実例:「対戦相手×自宅」での平均得点を出す
大阪グーニーズの試合結果シートには、1試合1行で対戦相手・開催地・得点を記録しているとします。B列に対戦相手、C列に開催地(「自宅」または「アウェイ」)、D列に得点が入っている想定です。
| 試合日 | 対戦相手 | 開催地 | 得点 |
|---|---|---|---|
| 4/6 | ○○ファイターズ | 自宅 | 6 |
| 4/13 | ○○ファイターズ | アウェイ | 2 |
| 4/20 | ○○ファイターズ | 自宅 | 4 |
| … | … | … | … |
「○○ファイターズとの対戦で、かつ自宅開催のときだけ」の平均得点を求めたいとき、式はこうなります。
=AVERAGEIFS(D2:D30, B2:B30, "○○ファイターズ", C2:C30, "自宅")
これで「B列が○○ファイターズ、かつC列が自宅」という2つの条件を両方満たす行だけを対象に、D列の得点が平均されます。
「対○○戦×自宅の平均得点」を表示したい集計欄のセルをクリックして選択します。
最初の引数には、実際に平均を出したい数値の列(ここではD列の得点)をドラッグで指定します。
対戦相手の列と条件、開催地の列と条件、という順にペアで指定していきます。条件を増やしたい場合は、さらに「条件範囲, 条件」を後ろに追加していくだけです。
式を確定すると、条件をすべて満たす行だけの平均得点がセルに表示されます。
しくみを理解する:AVERAGEIFSは何をしているのか
AVERAGEIFSは、ざっくり言うと「まずAND条件で行を絞り込み、そのあとで平均を計算する」という2段階の処理をしています。
- 1行ずつ、指定したすべての条件範囲・条件を照合していく
- 1つでも条件に一致しない行があれば、その行はまるごと対象から外れる(部分的に一致でもカウントされない)
- すべての条件に一致した行だけを集め、その平均対象範囲の数値を「合計÷件数」で平均する
- 条件はSUMIFS・COUNTIFSと同じ考え方で、標準ではOR(または)条件には対応していない
よくあるミス:AVERAGEIFSでつまずきやすいポイント
前回のAVERAGEIFは「条件範囲, 条件, 平均対象範囲」の順でしたが、AVERAGEIFSは「平均対象範囲」が一番最初に来ます。似た名前の関数なのに引数の並び順が違うため、コピーして使い回すときに条件範囲を先頭に置いてしまい、エラーになるケースがよくあります。
シーズン序盤でまだ「自宅開催」の対戦がない、といった場合、条件に一致する行が0件になり、平均対象の件数が0となって「#DIV/0!」エラーが表示されます。データが揃うまでの表示崩れが気になる場合は、後ほど扱うIFERRORとの組み合わせで対処できます。
- AVERAGEIFSは「複数条件をすべて満たす行だけ」を平均する関数
- 引数の並びは平均対象範囲が先頭、そのあとに条件範囲と条件のペアが続く(AVERAGEIFとは順番が違う)
- 条件はすべてANDで結ばれ、一致する行が0件だと#DIV/0!エラーになる
次回予告
次回のテーマは「比較演算子・ワイルドカードの基礎」です。「\>=」「\<\>」「\*」といった条件式の書き方のルールを、打数3以上の試合を抽出する例を通して整理していきます。
▶︎ 次回:比較演算子・ワイルドカードの基礎知識


コメント