AVERAGEIF関数の使い方としくみ|草野球成績管理表で先発登板時の防御率平均を出す例で解説

関数の使い方

条件に一致するデータだけを対象に平均を出したいとき、AVERAGEIF関数を使います。草野球の成績管理表で「先発登板時のみの防御率平均」を出す場面を例に、使い方と内部のしくみを解説します。

AVERAGEIF関数とは

📝 AVERAGEIF関数の役割(一言でいうと)

指定した条件に一致する行だけを取り出し、その平均を計算する関数です。AVERAGE関数に「条件で絞り込む」機能を足したものと考えると分かりやすいです。成績管理表では「先発試合だけの防御率平均」「自宅試合だけの平均得点」のように、全体ではなく一部の条件に絞って平均を出したい場面で活躍します。

基本の書式はこうです。

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

「条件範囲」で条件に合うかどうかをチェックし、条件に一致した行に対応する「平均範囲」のセルだけを集めて平均を出す、という流れです。実際のシートに当てはめると、下の図のような動きになります(ここでは5試合分に縮めた例で示します)。

AVERAGEIF関数の使い方:C列の登板区分が「先発」の行だけを選び、E列の防御率2.25・4.50・3.00の平均3.25を求める図解 AVERAGEIF関数の使い方 条件に一致する行だけを取り出して平均を計算する fx =AVERAGEIF(C2:C6,”先発”,E2:E6) 条件範囲 平均範囲 A B C D E 1 試合日 対戦相手 登板区分 投球回 防御率 2 4/6 ○○ファイターズ 先発 8.0 2.25 3 4/13 △△ベアーズ リリーフ 2.0 0.00 4 4/20 □□イーグルス 先発 6.0 4.50 5 4/27 ××ホークス リリーフ 1.2 0.00 6 5/4 ◇◇ライオンズ 先発 6.0 3.00 7 先発登板時の防御率平均 3.25 C列が「先発」の行だけを選び E列の防御率を平均します =AVERAGEIF(条件範囲, 条件, 平均範囲) 条件範囲の中から条件に一致する行を探し、その行に対応する平均範囲の値だけを平均します。 例:=AVERAGEIF(C2:C6,”先発”,E2:E6) → 先発の3試合(2.25/4.50/3.00)の平均 3.25 を返す 大阪グーニーズ データ解説
AVERAGEIF関数で「先発」の行だけを対象に防御率の平均を求める

成績管理表での実例:先発登板時のみの防御率平均を出す

大阪グーニーズの投手成績シートでは、登板ごとに「先発」か「リリーフ」かの区分と、その試合の防御率を1行ずつ記録しています。仮に「投手成績」シートがあり、C列に登板区分、E列にその試合の防御率が入っているとします。

試合日 対戦相手 登板区分 防御率(その試合)
4/6 ○○ファイターズ 先発 2.25
4/13 △△ベアーズ リリーフ 0.00
4/20 □□イーグルス 先発 4.50

この中から「先発」の行だけを対象に、防御率の平均を出したいとき、式はこうなります。

✅ 先発登板時のみの防御率平均を求める式
=AVERAGEIF(C2:C30,"先発",E2:E30)

これで「C列が『先発』になっている行だけを探し、対応するE列(防御率)の平均を出す」という計算が実行されます。リリーフ登板の試合は自動的に除外されるため、先発時の調子だけを追いかけたいときに便利です。

STEP 1
平均を表示したいセルを選択する

先発時の防御率平均を表示したいセル(例:投手成績シートの集計欄)をクリックして選択します。

STEP 2
「=AVERAGEIF(」と入力し、条件範囲・条件・平均範囲を指定する

まず登板区分の列(C2:C30)をドラッグで選び、次に条件として「”先発”」を入力し、最後に防御率の列(E2:E30)をドラッグで選びます。条件の文字列は必ずダブルクォーテーションで囲みます。

STEP 3
「)」で閉じてEnterキーで確定する

式を確定すると、先発登板の試合だけを対象にした防御率平均がすぐに表示されます。

しくみを理解する:AVERAGEIFは何をしているのか

📝 AVERAGEIFの内部動作

AVERAGEIFは、内部的には次の2段階の処理を1つの関数にまとめたものです。

  • ① 条件範囲を1セルずつ確認し、条件に一致する行だけを「対象」としてマークする
  • ② マークされた行に対応する平均範囲の値だけを集めて、合計÷件数の計算をする

つまり「SUMIF÷COUNTIF」に近い動きをしていると考えると理解しやすいです。合計÷件数という部分はAVERAGE関数と同じ考え方ですが、その前段で条件によるふるい分けが1つ挟まっている点がAVERAGEIF特有のしくみです。

この2段階の流れを図にすると、次のようになります。

AVERAGEIFの内部処理の図解:条件範囲から「先発」の3行をふるい分け、防御率2.25・4.50・3.00の合計9.75を件数3で割って3.25を求める流れ AVERAGEIFのしくみ 条件でふるい分けてから、合計÷件数を計算している fx =AVERAGEIF(C2:C6,”先発”,E2:E6) ① 条件でふるい分け ② 一致した値を集める ③ 合計 ÷ 件数 C E 1 登板区分 防御率 2 先発 2.25 3 リリーフ 0.00 × 4 先発 4.50 5 リリーフ 0.00 × 6 先発 3.00 先発の試合だけ 2.25 4.50 3.00 該当 3件 2.25 + 4.50 + 3.00 = 9.75(合計) 9.75 ÷ 3(件数) 3.25 これが先発時の防御率平均 =AVERAGEIF(C2:C6,“先発”,E2:E6) ①条件範囲を1行ずつ確認して一致する行をマークし、②その行の値だけで合計÷件数を計算しています。 SUMIF(合計)÷COUNTIF(件数)とほぼ同じ動き。一致が0件だと0÷0となり #DIV/0! エラーになります。 大阪グーニーズ データ解説
AVERAGEIFの内部処理:条件でふるい分けてから合計÷件数を計算している
📝 条件に一致する行が0件だと0除算エラーになる

条件に一致する行が1つも見つからなかった場合、AVERAGEIFは「合計0÷件数0」という計算をしようとするため、#DIV/0!エラーが返ります。これはAVERAGE関数で範囲が空のときに起きるエラーと同じ性質のものです。シーズン序盤でまだ先発登板が1試合もないときなどに、このエラーに遭遇しやすくなります。

よくあるミス:結果がおかしくなる原因

⚠️ 原因1:条件範囲と平均範囲の行数がズレている

条件範囲をC2:C30、平均範囲をE2:E31のように、範囲の開始行や行数を微妙にズラして指定してしまうケースです。行数が合っていないと、意図した行同士が対応せず、正しい平均になりません。

⚠️ 原因2:条件の文字列に表記ゆれがある

登板区分の入力欄に「先発」と「せんぱつ」、あるいは全角スペースが混じった「先発 」のような表記ゆれがあると、条件と一致しない行が出てきてしまいます。集計欄と入力欄で条件の書き方を揃えておくことが大切です。

✅ この記事のまとめ
  • AVERAGEIF関数は「条件に一致する行だけを対象に平均を出す」関数
  • 内部では条件によるふるい分け→合計÷件数という2段階の処理が行われている
  • 条件に一致する行が0件だと#DIV/0!エラーになる(AVERAGEの空範囲エラーと同じ性質)
  • 条件範囲と平均範囲の行数のズレと、条件文字列の表記ゆれが結果不一致の主な原因

次回予告

次回のテーマは「AVERAGEIFS関数」です。AVERAGEIFを複数条件に対応させた関数を、「対○○戦×自宅」での平均得点を出す例を使って解説していきます。

▶︎ 次回:AVERAGEIFS関数の使い方としくみ

コメント

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