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

関数・自動化

前回は勝率の計算式を作りました。今回のテーマは、投手にとって欠かせない3つの数字——奪三振・与四死球・被安打を投手ごとに自動集計する関数づくりです。

打者成績では、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つとも構造は同じで、違うのは最後の引数(合計する列)だけです。コピーして列番号を書き換えるだけで、残り2つも完成します。

関数を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をコピーしました