第63回 奪三振・与四死球・被安打をカウントする

関数・自動化

前回は勝率の計算式を作りました。今回は奪三振・与四死球・被安打を投手ごとに自動集計する関数を作ります。

打者成績では COUNTIF を使って「安打」「三振」「四球」などの記号を数えていました。投手成績の場合は少し事情が違います。フォーム(投手)シートには記号ではなく、試合ごとの「奪三振:3」「与四死球:2」といった数値がそのまま入力されています。記号を数えるのではなく、数値を足し合わせる——つまり COUNTIF ではなく SUMIF を使うのが今回のポイントです。

打者と投手でなぜ関数が違うのか

まず、打者と投手でデータの持ち方がどう違うかを整理しておきましょう。

✅ 打者フォームと投手フォームのデータ形式の違い
フォーム 三振・四球のデータ形式 集計に使う関数
フォーム(野手) 「空三振」「見三振」「四球」などの記号(文字列) COUNTIF(記号を数える)
フォーム(投手) 「奪三振:3」「与四死球:2」などの数値 SUMIF(数値を合計する)

投手フォームでは「1試合で何個の三振を奪ったか」を数値で入力しています。複数の試合分の数値を選手ごとに足し合わせるには、条件付きで合計を出す SUMIF が適しています。

📝 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:D

フォーム(投手)シートのD列は選手名が入っている列です。'シート名'!列 という形でクロスシート参照します。「このシートのこの列を条件でフィルタする」という意味になります。

パーツ② 絞り込み条件(選手名):B2
B2

年間(投手)シートのB2には選手名(たとえば SUZUKI)が入っています。これが絞り込み条件です。「フォーム(投手)シートのD列がB2と一致する行だけを対象にする」という指示になります。下にコピーすれば B3・B4…と自動でずれて各選手の合計が出ます。

パーツ③ 合計する列(奪三振列):’フォーム(投手)’!M:M
'フォーム(投手)'!M:M

パーツ①②で絞り込まれた行の、M列(奪三振)の数値を合計します。与四死球なら N:N、被安打なら K:K に変えるだけです。

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

フォーム(投手)シートの生データから、SUZUKIさん(仮)の奪三振を手で追ってみましょう。

試合日(フォームの行) 奪三振 与四死球 被安打
第1試合040
第2試合202
第4試合111
第6試合505
第7試合121
第9試合135
合計(SUMIF結果) 10 10 14

年間(投手)シートに表示されている SUZUKI の奪三振10・与四死球10・被安打14と完全に一致しています。

全選手の集計結果も確認しておきましょう。

選手名(仮) 奪三振 与四死球 被安打
TANAKA000
NAKATA434
SUZUKI101014
YAMAMOTO163
YAMAOKA103
SAKAI(登板なし)000
SATO834
ITO101
YAMADA14117

登板のない MIWA さんは一度もフォームに登場しないため、SUMIF の合計は自動的に 0 になります。IFERRORは不要で、0除算エラーの心配もありません。

打者成績との比較:COUNTIFとSUMIFの使い分け

ここで改めて、打者(COUNTIF)と投手(SUMIF)の使い分けを整理しておきましょう。連載を通して何度も登場する重要な考え方です。

⚠️ COUNTIFとSUMIFを混同しないために
関数 何をするか 使う場面 具体例
COUNTIF 条件に一致するセルの個数を数える フォーム(野手)の記号集計 「空三振」の記号が何個あるか
SUMIF 条件に一致する行の数値を合計する フォーム(投手)の数値集計 奪三振の数値を選手ごとに足す

「データが記号(文字列)ならCOUNTIF、数値ならSUMIF」と覚えておくと迷いません。

STEP:実際にシートに入力する手順

STEP 1 列の位置を確認する

フォーム(投手)シートを開いて、名前・被安打・奪三振・与四死球がそれぞれ何列目にあるか確認します。この連載の設計では名前=D列、被安打=K列、奪三振=M列、与四死球=N列です。自分のシートが違う場合はその列に読み替えてください。

STEP 2 年間(投手)シートに式を入力する

奪三振の列(たとえばP列)の先頭行(P2)に次の式を入力します。

=SUMIF('フォーム(投手)'!D:D, B2, 'フォーム(投手)'!M:M)
STEP 3 与四死球・被安打の式をコピーして作る

P2の式をコピーして与四死球・被安打の列に貼り付け、最後の引数の列番号だけ変更します。与四死球は !M:M!N:N に、被安打は !M:M!K:K に書き換えます。

STEP 4 下の行へコピーして全選手分を完成させる

入力した行を選択して、選手数分だけ下にコピーします。B列の選手名が B3・B4…と自動でずれるため、各選手の合計が自動的に出ます。

よくある失敗:数値が合わない場合のチェックポイント

📝 集計がうまくいかないときの確認ポイント
  1. 選手名の表記が一致しているか——年間(投手)シートのB列とフォーム(投手)シートのD列で名前が完全に一致しているか確認する。スペースの有無や全角・半角の違いで一致しないことがある。
  2. 合計する列が数値になっているか——フォームから転記される列が文字列として保存されている場合、SUMIFが 0 を返すことがある。セルが左寄りになっていたら文字列の疑いがある。
  3. 列の指定が正しいか——奪三振と与四死球など、隣り合う列を指定し間違えやすい。フォーム(投手)シートで実際に列を確認してから式を書くと確実。
✅ この記事のまとめ
  • 投手フォームの奪三振・与四死球・被安打は数値で入力されているため、記号を数える COUNTIF ではなく数値を合計する SUMIF を使う
  • 式の構造は =SUMIF(名前列, 選手名, 合計する列) で、3指標とも最後の引数の列だけが異なる
  • 登板のない選手は SUMIF が自動で 0 を返すため、IFERROR は不要
  • 「データが記号(文字列)ならCOUNTIF、数値ならSUMIF」と覚えておくと使い分けで迷わない
  • 次回は完投・完封・セーブの記録方法を解説する

次回予告

次回は「完投・完封・セーブの記録方法」。投球回ごとにフラグ(0か1)で管理するテクニックと、SUMIFで年間集計する方法を解説します。

▶︎ 次回:【第64回】完投・完封・セーブの記録方法

コメント

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