前回は奪三振・与四死球・被安打をSUMIFで集計する方法を解説しました。今回は完投・完封・セーブを記録して自動集計する仕組みを作ります。
この3つは他の投手成績と少し事情が異なります。「投球回が何回だった」「三振が何個だった」という量の話ではなく、「完投したか・しなかったか」「セーブをあげたか・あげなかったか」という事実の記録です。この「あった・なかった」を数字で管理するのが、今回紹介するフラグ管理というテクニックです。
完投・完封・セーブをどうやって記録するか
まず、完投・完封・セーブのそれぞれの記録方法を確認しておきましょう。フォーム(投手)シートの設計がそのまま関数の書き方に影響します。
| 指標 | フォームでの記録方式 | 集計に使う関数 |
|---|---|---|
| 完投 | 専用列に 0 か 1 を入力(フラグ) | SUMIF(0/1を合計) |
| 完封 | 専用列に 0 か 1 を入力(フラグ) | SUMIF(0/1を合計) |
| セーブ | 勝敗列に 「S」 を入力(記号) | COUNTIFS(「S」を数える) |
完投・完封はフラグ(0/1の数値)なのでSUMIF、セーブは勝敗列の記号「S」なのでCOUNTIFS——前回の「数値ならSUMIF、記号ならCOUNTIF系」という使い分けがここでも活きています。
フラグ管理とは何か
「フラグ管理」という言葉が出てきましたが、難しいものではありません。
「完投した試合は 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
第1の条件です。フォーム(投手)シートのD列(名前)が、年間(投手)シートのB2(選手名)と一致する行に絞ります。
'フォーム(投手)'!E:E, "S"
第2の条件です。E列(勝敗)が「S」(セーブ)である行だけを対象にします。勝ちは「勝」、負けは「負」、セーブは「S」、勝敗なしは空欄という設計なので、「S」と一致する行を数えるとセーブ数になります。
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 にしてください。関数は独立して集計するため、完投列が 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つのシートに揃え、投手成績表を完成させます。


コメント