前回は勝率の計算式を作りました。今回は奪三振・与四死球・被安打を投手ごとに自動集計する関数を作ります。
打者成績では COUNTIF を使って「安打」「三振」「四球」などの記号を数えていました。投手成績の場合は少し事情が違います。フォーム(投手)シートには記号ではなく、試合ごとの「奪三振:3」「与四死球:2」といった数値がそのまま入力されています。記号を数えるのではなく、数値を足し合わせる——つまり COUNTIF ではなく SUMIF を使うのが今回のポイントです。
打者と投手でなぜ関数が違うのか
まず、打者と投手でデータの持ち方がどう違うかを整理しておきましょう。
| フォーム | 三振・四球のデータ形式 | 集計に使う関数 |
|---|---|---|
| フォーム(野手) | 「空三振」「見三振」「四球」などの記号(文字列) | COUNTIF(記号を数える) |
| フォーム(投手) | 「奪三振:3」「与四死球:2」などの数値 | SUMIF(数値を合計する) |
投手フォームでは「1試合で何個の三振を奪ったか」を数値で入力しています。複数の試合分の数値を選手ごとに足し合わせるには、条件付きで合計を出す SUMIF が適しています。
SUMIF(範囲, 条件, 合計範囲) は「範囲の中で条件に一致する行だけを選んで、合計範囲の数値を足し合わせる」関数です。一言でいうと「条件付きのSUM」です。第46回で打点・本塁打・盗塁の集計に使ったのと同じ関数ですね。投手成績でも同じ考え方がそのまま使えます。
完成形の関数
フォーム(投手)シートの名前列をD列、奪三振をM列、与四死球をN列、被安打をK列とすると、年間(投手)シートで選手ごとに集計する関数はそれぞれこうなります。なお、年間(投手)シートの選手名がB2に入っているものとします。
奪三振
=SUMIF('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!M:M)
与四死球
=SUMIF('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!N:N)
被安打
=SUMIF('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!K:K)
3つとも構造は同一で、最後の引数(合計する列)だけが違います。コピーして最後の列番号を変えるだけで完成します。
関数を3つのパーツに分解して理解する
奪三振の式を例に、3つのパーツを確認します。
'フォーム(投手)'!D:D
フォーム(投手)シートのD列は選手名が入っている列です。'シート名'!列 という形でクロスシート参照します。「このシートのこの列を条件でフィルタする」という意味になります。
B2
年間(投手)シートのB2には選手名(たとえば SUZUKI)が入っています。これが絞り込み条件です。「フォーム(投手)シートのD列がB2と一致する行だけを対象にする」という指示になります。下にコピーすれば B3・B4…と自動でずれて各選手の合計が出ます。
'フォーム(投手)'!M:M
パーツ①②で絞り込まれた行の、M列(奪三振)の数値を合計します。与四死球なら N:N、被安打なら K:K に変えるだけです。
実際のデータで集計結果を確認する
フォーム(投手)シートの生データから、SUZUKIさん(仮)の奪三振を手で追ってみましょう。
| 試合日(フォームの行) | 奪三振 | 与四死球 | 被安打 |
|---|---|---|---|
| 第1試合 | 0 | 4 | 0 |
| 第2試合 | 2 | 0 | 2 |
| 第4試合 | 1 | 1 | 1 |
| 第6試合 | 5 | 0 | 5 |
| 第7試合 | 1 | 2 | 1 |
| 第9試合 | 1 | 3 | 5 |
| 合計(SUMIF結果) | 10 | 10 | 14 |
年間(投手)シートに表示されている SUZUKI の奪三振10・与四死球10・被安打14と完全に一致しています。
全選手の集計結果も確認しておきましょう。
| 選手名(仮) | 奪三振 | 与四死球 | 被安打 |
|---|---|---|---|
| TANAKA | 0 | 0 | 0 |
| NAKATA | 4 | 3 | 4 |
| SUZUKI | 10 | 10 | 14 |
| YAMAMOTO | 1 | 6 | 3 |
| YAMAOKA | 1 | 0 | 3 |
| SAKAI(登板なし) | 0 | 0 | 0 |
| SATO | 8 | 3 | 4 |
| ITO | 1 | 0 | 1 |
| YAMADA | 14 | 11 | 7 |
登板のない MIWA さんは一度もフォームに登場しないため、SUMIF の合計は自動的に 0 になります。IFERRORは不要で、0除算エラーの心配もありません。
打者成績との比較:COUNTIFとSUMIFの使い分け
ここで改めて、打者(COUNTIF)と投手(SUMIF)の使い分けを整理しておきましょう。連載を通して何度も登場する重要な考え方です。
| 関数 | 何をするか | 使う場面 | 具体例 |
|---|---|---|---|
| COUNTIF | 条件に一致するセルの個数を数える | フォーム(野手)の記号集計 | 「空三振」の記号が何個あるか |
| SUMIF | 条件に一致する行の数値を合計する | フォーム(投手)の数値集計 | 奪三振の数値を選手ごとに足す |
「データが記号(文字列)ならCOUNTIF、数値ならSUMIF」と覚えておくと迷いません。
STEP:実際にシートに入力する手順
フォーム(投手)シートを開いて、名前・被安打・奪三振・与四死球がそれぞれ何列目にあるか確認します。この連載の設計では名前=D列、被安打=K列、奪三振=M列、与四死球=N列です。自分のシートが違う場合はその列に読み替えてください。
奪三振の列(たとえばP列)の先頭行(P2)に次の式を入力します。
=SUMIF('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!M:M)
P2の式をコピーして与四死球・被安打の列に貼り付け、最後の引数の列番号だけ変更します。与四死球は !M:M を !N:N に、被安打は !M:M を !K:K に書き換えます。
入力した行を選択して、選手数分だけ下にコピーします。B列の選手名が B3・B4…と自動でずれるため、各選手の合計が自動的に出ます。
よくある失敗:数値が合わない場合のチェックポイント
- 選手名の表記が一致しているか——年間(投手)シートのB列とフォーム(投手)シートのD列で名前が完全に一致しているか確認する。スペースの有無や全角・半角の違いで一致しないことがある。
- 合計する列が数値になっているか——フォームから転記される列が文字列として保存されている場合、SUMIFが 0 を返すことがある。セルが左寄りになっていたら文字列の疑いがある。
- 列の指定が正しいか——奪三振と与四死球など、隣り合う列を指定し間違えやすい。フォーム(投手)シートで実際に列を確認してから式を書くと確実。
- 投手フォームの奪三振・与四死球・被安打は数値で入力されているため、記号を数える COUNTIF ではなく数値を合計する SUMIF を使う
- 式の構造は
=SUMIF(名前列, 選手名, 合計する列)で、3指標とも最後の引数の列だけが異なる - 登板のない選手は SUMIF が自動で 0 を返すため、IFERROR は不要
- 「データが記号(文字列)ならCOUNTIF、数値ならSUMIF」と覚えておくと使い分けで迷わない
- 次回は完投・完封・セーブの記録方法を解説する
次回予告
次回は「完投・完封・セーブの記録方法」。投球回ごとにフラグ(0か1)で管理するテクニックと、SUMIFで年間集計する方法を解説します。
▶︎ 次回:【第64回】完投・完封・セーブの記録方法



コメント