第64回 完投・完封・セーブの記録方法

関数・自動化

前回は奪三振・与四死球・被安打をSUMIFで集計する方法を解説しました。今回は完投・完封・セーブを記録して自動集計する仕組みを作ります。

この3つは他の投手成績と少し事情が異なります。「投球回が何回だった」「三振が何個だった」という量の話ではなく、「完投したか・しなかったか」「セーブをあげたか・あげなかったか」という事実の記録です。この「あった・なかった」を数字で管理するのが、今回紹介するフラグ管理というテクニックです。

完投・完封・セーブをどうやって記録するか

まず、完投・完封・セーブのそれぞれの記録方法を確認しておきましょう。フォーム(投手)シートの設計がそのまま関数の書き方に影響します。

✅ 3指標の記録方式まとめ
指標 フォームでの記録方式 集計に使う関数
完投 専用列に 0 か 1 を入力(フラグ) SUMIF(0/1を合計)
完封 専用列に 0 か 1 を入力(フラグ) SUMIF(0/1を合計)
セーブ 勝敗列に 「S」 を入力(記号) COUNTIFS(「S」を数える)

完投・完封はフラグ(0/1の数値)なのでSUMIF、セーブは勝敗列の記号「S」なのでCOUNTIFS——前回の「数値ならSUMIF、記号ならCOUNTIF系」という使い分けがここでも活きています。

フラグ管理とは何か

「フラグ管理」という言葉が出てきましたが、難しいものではありません。

📝 フラグ管理とは「あった=1、なかった=0」で記録する方法

「完投した試合は 1、しなかった試合は 0」と記録するルールのことです。数値として入力するので、SUMIFで合計するだけでシーズンの完投数が自動計算されます。

試合 完投フラグ 完封フラグ 状況
第1試合(1/25) 0 0 途中降板(3回)
第2試合(2/1) 1 1 7回完封勝利
第4試合(3/1) 0 0 途中降板(1回)
第6試合(3/15) 1 1 4回完封勝利
その他の登板 0 0 途中降板
SUMIFの合計 2 2 SUZUKIの成績

1を足し合わせるだけで完投数・完封数が出る、シンプルな仕組みです。

完成形の関数

フォーム(投手)シートで名前=D列、完投=F列、完封=G列、勝敗=E列とします。年間(投手)シートの選手名がB2に入っているとして、それぞれの式はこうなります。

✅ 完投・完封・セーブの完成式

完投

=SUMIF('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!F:F)

完封

=SUMIF('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!G:G)

セーブ

=COUNTIFS('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!E:E, "S")

完投・完封はSUMIF(前回と同じ構造)、セーブだけCOUNTIFSになります。

セーブの式を3つのパーツに分解して理解する

完投・完封のSUMIFは前回解説した奪三振の式と構造がまったく同じなので、ここではセーブのCOUNTIFSを丁寧に読み解きます。

パーツ① 名前で絞り込む:’フォーム(投手)’!D:D, B2
'フォーム(投手)'!D:D, B2

第1の条件です。フォーム(投手)シートのD列(名前)が、年間(投手)シートのB2(選手名)と一致する行に絞ります。

パーツ② 勝敗列が「S」の行だけカウント:’フォーム(投手)’!E:E, “S”
'フォーム(投手)'!E:E, "S"

第2の条件です。E列(勝敗)が「S」(セーブ)である行だけを対象にします。勝ちは「勝」、負けは「負」、セーブは「S」、勝敗なしは空欄という設計なので、「S」と一致する行を数えるとセーブ数になります。

COUNTIFSを使う理由:条件が2つあるから
COUNTIFS(範囲1, 条件1, 範囲2, 条件2)

「この選手の行だけ(条件1)」かつ「勝敗が S の行だけ(条件2)」という2条件の絞り込みが必要なため、複数条件に対応したCOUNTIFSを使います。条件が1つだけなら COUNTIF で足りますが、複数になったら COUNTIFS に切り替えると覚えておきましょう。

実際のデータで集計結果を確認する

フォーム(投手)シートの生データから、全選手の集計結果を確認します。

選手名(仮) 完投 完封 セーブ 備考
TANAKA 0 0 0 1回のみの登板
NAKATA 0 0 0 中継ぎ中心
SUZUKI 2 2 0 2/1・3/15に完封勝利
YAMAMOTO 0 0 0
YAMAOKA 0 0 0
SAKAI(登板なし) 0 0 0 フォームに登場しない→自動で0
SATO 0 0 1 4/26に「S」を記録
YAMAKAWA 0 0 0
YAMADA 0 0 0

年間(投手)シートの集計値と完全に一致しています。SUZUKIさんの完投2・完封2、SATOさんのセーブ1がきれいに出ています。登板のないMIWAさんはフォームに1行も登場しないため、SUMIF・COUNTIFSともに自動で 0 を返します。

完封は必ず完投とセットになる

ここで一つ確認しておきたいことがあります。完封(相手チームを無失点に抑えて完投すること)は定義上、必ず完投でもあります。

⚠️ フォーム入力時の注意:完封のときは完投も 1 にする

完封した試合を記録するときは、完封列を 1 にするだけでなく、完投列も必ず 1 にしてください。関数は独立して集計するため、完投列が 0 のままでは完投数が実態より少なくなってしまいます。

状況 完投列 完封列
完投(失点あり) 1 0
完封(失点なし・完投) 1 1
途中降板 0 0
❌ 入力ミスの例(完封のとき完投を 0 にしてしまう) 0 1

3指標の関数を並べて比較する

最後に、今回作った3つの式の構造を並べて確認しておきましょう。

📝 完投・完封・セーブの式を見比べると構造がよくわかる
指標 関数 条件数
完投 SUMIF(D:D, B2, F:F) SUMIF 1(名前のみ)
完封 SUMIF(D:D, B2, G:G) SUMIF 1(名前のみ)
セーブ COUNTIFS(D:D, B2, E:E, “S”) COUNTIFS 2(名前+「S」)

完投・完封は「その選手の行の数値(0/1)を合計する」だけなので条件は名前の1つ。セーブは「その選手の行」かつ「勝敗が S の行」という2条件なので COUNTIFS を使う——この違いを押さえておけば迷いません。

✅ この記事のまとめ
  • 完投・完封は「あった=1、なかった=0」のフラグ(0/1)でフォームに記録し、SUMIFで選手別に合計する
  • セーブは勝敗列に「S」を入力し、COUNTIFSで名前と「S」の2条件で絞り込んで数える
  • 完封のときは完投列も必ず 1 にする——完投と完封は独立した列で別々に管理しているため
  • 条件が1つならSUMIF・COUNTIF、条件が2つ以上になったらCOUNTIFS に切り替える
  • 次回は年間(投手)シートの列構成を完成させる

次回予告

次回は「年間(投手)シートの列構成を完成させる」。これまで第58回から作ってきた投球回・防御率・勝率・奪三振・完投・完封・セーブをすべて1つのシートに揃え、投手成績表を完成させます。

▶︎ 次回:【第65回】年間(投手)シートの列構成を完成させる

コメント

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