前回は勝率の計算式を作りました。今回のテーマは、投手にとって欠かせない3つの数字——奪三振・与四死球・被安打を投手ごとに自動集計する関数づくりです。
打者成績では、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つとも構造は同じで、違うのは最後の引数(合計する列)だけです。コピーして列番号を書き換えるだけで、残り2つも完成します。
関数を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回】完投・完封・セーブの記録方法



コメント