前回は完投・完封・セーブをフラグ管理とCOUNTIFSで集計する方法を解説しました。今回はいよいよ年間(投手)シートの列構成を完成させます。第58回から7回にわたって作ってきた投球回・防御率・勝率・奪三振・完投・完封・セーブを1枚のシートにまとめ、投手成績表として仕上げます。
「これまでの回で関数はひと通り作ったけれど、シート全体の見通しが今ひとつ」という方も多いと思います。この回でパズルのピースが全部そろって、一枚の絵になるイメージで読んでみてください。
年間(投手)シートに並べる列の全体像
まず、完成後のシートにどんな列が並ぶかを確認しましょう。実際の成績管理表では次のような列構成になっています。
| 列 | 項目名 | 使う関数・しくみ | 解説回 |
|---|---|---|---|
| A | #(背番号) | 設定一覧シートから手入力または参照 | — |
| B | 選手名 | 設定一覧シートから手入力または参照 | — |
| C | 試合数 | COUNTIF(登板した試合を数える) | — |
| D | 勝 | COUNTIFS(名前+勝敗「勝」) | 第62回 |
| E | 負 | COUNTIFS(名前+勝敗「負」) | 第62回 |
| F | セーブ | COUNTIFS(名前+勝敗「S」) | 第64回 |
| G | 勝率 | IFERROR(勝÷(勝+負), 0) | 第62回 |
| H | 防御率 | IFERROR(自責点×9÷投球回, 0) | 第61回 |
| I | 投球回(表示用) | 「○回○/3」形式の表示変換 | 第60回 |
| J | 失点 | SUMIF(名前で絞って失点を合計) | — |
| K | 自責点 | SUMIF(名前で絞って自責点を合計) | — |
| L | 完投 | SUMIF(完投フラグ 0/1 を合計) | 第64回 |
| M | 完封 | SUMIF(完封フラグ 0/1 を合計) | 第64回 |
| N | 被安打 | SUMIF(名前で絞って被安打を合計) | 第63回 |
| O | 被本塁打 | SUMIF(名前で絞って被本塁打を合計) | — |
| P | 奪三振 | SUMIF(名前で絞って奪三振を合計) | 第63回 |
| Q | 与四死球 | SUMIF(名前で絞って与四死球を合計) | 第63回 |
A・B列(背番号・選手名)は手入力。C列以降はすべて関数で自動集計されます。
選手名(B列)の入れ方がすべての基点になる
年間(投手)シートで最も大切なのはB列の選手名の書き方です。ここに入力した文字列が、すべての関数の「条件」として使われるからです。
たとえばフォーム(投手)シートに「K.SUZUKI」と入力されている選手の名前を、年間(投手)シートのB列に「K. SUZUKI」(スペースあり)や「k.suzuki」(小文字)と書くと、SUMIFやCOUNTIFSが「条件に一致する行がない」と判定してしまい、すべて 0 になります。
| B列の入力例 | 集計結果 | 理由 |
|---|---|---|
| K.SUZUKI | 正しく集計される ✅ | フォームと完全一致 |
| T. MIZUKO(スペースあり) | すべて 0 になる ❌ | 半角スペースが1文字違いとして扱われる |
| k.suzuki(小文字) | 正しく集計される ✅ | スプレッドシートは大文字・小文字を区別しない |
大文字・小文字は問いませんが、スペースの有無は要注意です。設定一覧シートからコピー&ペーストで貼ると確実です。
全関数を列順に並べる
B2に選手名(例:K.SUZUKI)が入っているとして、各列に入れる関数を順番に確認します。フォーム(投手)シートの列構成は次のとおりです:D列=名前、E列=勝敗、F列=完投、G列=完封、H列=投球回(小数表記)、I列=失点、J列=自責点、K列=被安打、L列=被本塁打、M列=奪三振、N列=与四死球。
=COUNTIF('フォーム(投手)'!D:D, B2)
フォーム(投手)のD列(名前)に B2 と一致する行が何行あるかを数えます。1試合に1行記録されるので、そのまま登板試合数になります。
=COUNTIFS('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!E:E, "勝") ← 勝
=COUNTIFS('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!E:E, "負") ← 負
E列(勝敗)が「勝」または「負」と一致する行をそれぞれCOUNTIFSで数えます。
=COUNTIFS('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!E:E, "S")
E列(勝敗)が「S」の行を数えます(第64回で詳しく解説)。
=IFERROR(D2/(D2+E2), 0)
勝÷(勝+負)で勝率を計算します。勝も負も 0 のとき(0÷0)になるのをIFERRORで防いで 0 を返します。
=IFERROR(K2*9/投球回の計算値, 0)
自責点×9÷投球回(実数値)です。投球回は「表示用」(I列)ではなく、第58〜59回で作った実数変換後の値を参照してください(第61回で詳しく解説)。
例)=INT(投球回実数)&"回"&IF(MOD(投球回実数*3,3)=0,"",MOD(投球回実数*3,3)&"/3")
数値の投球回を「22回」「6回2/3」のように読みやすく変換する列です(第60回で詳しく解説)。
=SUMIF('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!I:I) ← 失点
=SUMIF('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!J:J) ← 自責点
名前で絞ってそれぞれの数値列を合計します。
=SUMIF('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!F:F) ← 完投
=SUMIF('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!G:G) ← 完封
フラグ(0か1)を合計するだけで完投数・完封数が出ます(第64回で詳しく解説)。
=SUMIF('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!K:K) ← 被安打
=SUMIF('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!L:L) ← 被本塁打
=SUMIF('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!M:M) ← 奪三振
=SUMIF('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!N:N) ← 与四死球
いずれも「名前で絞って、対応する列の数値を合計」という同じ構造です(第63回で詳しく解説)。
実際の集計結果で完成形を確認する
フォーム(投手)シートに記録された実データから集計した結果が下の表です。年間(投手)シートはこの状態が完成形になります。
| # | 選手名 | 試合数 | 勝 | 負 | S | 勝率 | 防御率 | 投球回 | 失点 | 自責点 | 完投 | 完封 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 30 | S.TANAKA | 1 | 0 | 0 | 0 | 0 | 0 | 1回 | 0 | 0 | 0 | 0 |
| 10 | T.NAKATA | 3 | 2 | 0 | 0 | 1 | 1 | 9回 | 2 | 1 | 0 | 0 |
| 1 | K.SUZUKI | 6 | 2 | 0 | 0 | 1 | 1.64 | 22回 | 5 | 4 | 2 | 2 |
| 18 | H.YAMAMOTO | 5 | 1 | 0 | 1 | 1 | 0 | 6回2/3 | 2 | 0 | 0 | 0 |
| 51 | S.YAMAOKA | 4 | 0 | 2 | 0 | 0 | 5.84 | 12回1/3 | 11 | 8 | 0 | 0 |
| 14 | T.OKADA(未登板) | 0 | 0 | 0 | 0 | 0 | 0 | 0回 | 0 | 0 | 0 | 0 |
K.SUZUKIさんの完投2・完封2、H.OKITAさんのセーブ1がきちんと表示されています。未登板のD.MIWAさんはフォームに1行も登場しないため、すべての関数が自動で 0 を返しています。
2行目に入れた関数を3行目以降にコピーするだけで完成する
シートへの入力手順をSTEP形式で確認しましょう。
A1に「#」、B1に「選手名」、C1に「試合数」…と列名を横に並べます。前述の列一覧表をそのまま使ってください。
A2に背番号(例:1)、B2に選手名(例:K.SUZUKI)を手入力します。フォーム(投手)シートの表記と完全一致させてください。
この記事で紹介した関数を1列ずつ入力します。最初の選手(B2)でしっかり動作確認してから次のステップへ進みましょう。
C2からQ2まで横に選択し、コピーします(Ctrl+C または ⌘+C)。
A列・B列に2人目以降の背番号と名前を入力し、C列〜Q列は STEP 4 でコピーした関数をそのまま貼り付けます。スプレッドシートが行番号を自動でずらしてくれるので、B3・B4…を参照する形に自動調整されます。
SUMIFやCOUNTIFSの範囲(例:'フォーム(投手)'!D:D)はシートの列全体を指定しているため、行方向にコピーしてもずれません。一方、条件(例:B2)は行ごとに変わってほしいので $ はつけないままにしておきます。
| 記述例 | コピー時の動作 |
|---|---|
| B2($なし) | 3行目にコピーすると自動でB3に変わる ✅ |
| ‘フォーム(投手)’!D:D | 列全体なので何行にコピーしてもそのまま ✅ |
「0回」の選手はどう表示されるか
未登板の選手(フォームに1行も登場しない選手)は、試合数・勝・負・セーブ・失点・自責点・完投・完封・被安打・奪三振・与四死球がすべて 0 になります。投球回の表示用セルは「0回」と表示されます。防御率・勝率はIFERRORで 0 を返すよう設計しているので、エラー(#DIV/0!)は出ません。
I列には「22回」「6回2/3」のような文字列が入っています。防御率の計算(H列)でこの文字列を参照すると、文字列÷数値になってしまい正しく計算できません。
防御率の分母には、第58〜59回で別途作成した実数変換後の投球回(数値)を使ってください。年間(投手)シートに非表示列として実数投球回を持たせておくのが、実際の成績管理表での運用方法です。
- 年間(投手)シートはA〜Q列の17列で構成。A・B列(背番号・選手名)は手入力、C列以降はすべて関数で自動集計
- B列の選手名はフォーム(投手)シートと一字一句同じ表記にする——スペースの有無がずれると全列が 0 になる
- 2行目に全関数を入れたら3行目以降はコピー&ペーストするだけ。スプレッドシートが行番号を自動でずらしてくれる
- 防御率の計算では表示用の文字列(「○回」)ではなく実数値の投球回を参照すること
- 未登板選手はフォームに行がないためすべて自動で 0 になる——IFERRORのおかげでエラーも出ない
- 次回は投手成績をグラフで可視化する
次回予告
次回は「投手成績をグラフで可視化する」。防御率の推移や奪三振の積み上げを折れ線グラフ・棒グラフで表示し、シーズンを通した投手陣の変化を一目で把握できるようにします。
▶︎ 次回:【第66回】投手成績をグラフで可視化する



コメント