条件に一致するデータだけを対象に平均を出したいとき、AVERAGEIF関数を使います。草野球の成績管理表で「先発登板時のみの防御率平均」を出す場面を例に、使い方と内部のしくみを解説します。
AVERAGEIF関数とは
指定した条件に一致する行だけを取り出し、その平均を計算する関数です。AVERAGE関数に「条件で絞り込む」機能を足したものと考えると分かりやすいです。成績管理表では「先発試合だけの防御率平均」「自宅試合だけの平均得点」のように、全体ではなく一部の条件に絞って平均を出したい場面で活躍します。
基本の書式はこうです。
=AVERAGEIF(条件範囲, 条件, 平均範囲)
「条件範囲」で条件に合うかどうかをチェックし、条件に一致した行に対応する「平均範囲」のセルだけを集めて平均を出す、という流れです。
成績管理表での実例:先発登板時のみの防御率平均を出す
大阪グーニーズの投手成績シートでは、登板ごとに「先発」か「リリーフ」かの区分と、その試合の防御率を1行ずつ記録しています。仮に「投手成績」シートがあり、C列に登板区分、E列にその試合の防御率が入っているとします。
| 試合日 | 対戦相手 | 登板区分 | 防御率(その試合) |
|---|---|---|---|
| 4/6 | ○○ファイターズ | 先発 | 2.25 |
| 4/13 | △△ベアーズ | リリーフ | 0.00 |
| 4/20 | □□イーグルス | 先発 | 4.50 |
| … | … | … | … |
この中から「先発」の行だけを対象に、防御率の平均を出したいとき、式はこうなります。
=AVERAGEIF(C2:C30,"先発",E2:E30)
これで「C列が『先発』になっている行だけを探し、対応するE列(防御率)の平均を出す」という計算が実行されます。リリーフ登板の試合は自動的に除外されるため、先発時の調子だけを追いかけたいときに便利です。
先発時の防御率平均を表示したいセル(例:投手成績シートの集計欄)をクリックして選択します。
まず登板区分の列(C2:C30)をドラッグで選び、次に条件として「”先発”」を入力し、最後に防御率の列(E2:E30)をドラッグで選びます。条件の文字列は必ずダブルクォーテーションで囲みます。
式を確定すると、先発登板の試合だけを対象にした防御率平均がすぐに表示されます。
しくみを理解する:AVERAGEIFは何をしているのか
AVERAGEIFは、内部的には次の2段階の処理を1つの関数にまとめたものです。
- ① 条件範囲を1セルずつ確認し、条件に一致する行だけを「対象」としてマークする
- ② マークされた行に対応する平均範囲の値だけを集めて、合計÷件数の計算をする
つまり「SUMIF÷COUNTIF」に近い動きをしていると考えると理解しやすいです。合計÷件数という部分はAVERAGE関数と同じ考え方ですが、その前段で条件によるふるい分けが1つ挟まっている点がAVERAGEIF特有のしくみです。
条件に一致する行が1つも見つからなかった場合、AVERAGEIFは「合計0÷件数0」という計算をしようとするため、#DIV/0!エラーが返ります。これはAVERAGE関数で範囲が空のときに起きるエラーと同じ性質のものです。シーズン序盤でまだ先発登板が1試合もないときなどに、このエラーに遭遇しやすくなります。
よくあるミス:結果がおかしくなる原因
条件範囲をC2:C30、平均範囲をE2:E31のように、範囲の開始行や行数を微妙にズラして指定してしまうケースです。行数が合っていないと、意図した行同士が対応せず、正しい平均になりません。
登板区分の入力欄に「先発」と「せんぱつ」、あるいは全角スペースが混じった「先発 」のような表記ゆれがあると、条件と一致しない行が出てきてしまいます。集計欄と入力欄で条件の書き方を揃えておくことが大切です。
- AVERAGEIF関数は「条件に一致する行だけを対象に平均を出す」関数
- 内部では条件によるふるい分け→合計÷件数という2段階の処理が行われている
- 条件に一致する行が0件だと#DIV/0!エラーになる(AVERAGEの空範囲エラーと同じ性質)
- 条件範囲と平均範囲の行数のズレと、条件文字列の表記ゆれが結果不一致の主な原因
次回予告
次回のテーマは「AVERAGEIFS関数」です。AVERAGEIFを複数条件に対応させた関数を、「対○○戦×自宅」での平均得点を出す例を使って解説していきます。
▶︎ 次回:AVERAGEIFS関数の使い方としくみ


コメント