第39回 「打数」の除外ロジックを関数で作る

関数・自動化

前回は「打席数」と「打数」の違いを整理しました。今回はいよいよ打数を正確に計算するための除外ロジックを、関数として組み立てていきます。

考え方はシンプルです。「打数 = 打席数 − 四球 − 死球 − 犠打 − 犠飛」。この式を、そのままCOUNTIFS関数に落とし込んでいきましょう。

除外ロジックの全体設計

年間(野手)シートに列を追加し、段階を踏んで計算していきます。

項目名 計算方法
A列選手名手入力
B列打席数「打なし」以外をカウント
C列四球数「四球」と一致をカウント
D列死球数「死球」と一致をカウント
E列犠打数「犠打」と一致をカウント
F列犠飛数「犠飛」と一致をカウント
G列打数B2−C2−D2−E2−F2
✅ 段階的に計算するメリット

四球・死球・犠打・犠飛をあえて別々の列で管理すると、「四球は何個あったか」「犠打は何回か」といった細かい記録もそのまま残せます。さらに、打数の数字がおかしいと感じたときも、どの列に原因があるのかすぐに突き止められます。

打席数の関数

まずは打席数から。「打なし」以外のすべての打席をカウントします。

✅ B列:打席数の関数
=COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!G:G,"<>打なし")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!H:H,"<>打なし")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!I:I,"<>打なし")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!J:J,"<>打なし")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!K:K,"<>打なし")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!L:L,"<>打なし")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!M:M,"<>打なし")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!N:N,"<>打なし")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!O:O,"<>打なし")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!P:P,"<>打なし")

四球数の関数

次は四球数です。「四球」と完全一致する打席だけをカウントします。

✅ C列:四球数の関数
=COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!G:G,"四球")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!H:H,"四球")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!I:I,"四球")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!J:J,"四球")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!K:K,"四球")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!L:L,"四球")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!M:M,"四球")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!N:N,"四球")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!O:O,"四球")
+COUNTIFS('フォームの回答(野手)'!E:E,A2,'フォームの回答(野手)'!P:P,"四球")

死球(D列)・犠打(E列)・犠飛(F列)も作り方は同じです。数式中の「四球」の部分を、それぞれ「死球」「犠打」「犠飛」に置き換えるだけで完成します。

打数の関数(最終形)

打席数・四球・死球・犠打・犠飛がそれぞれ別の列に揃えば、あとは引き算するだけで打数が求まります。

✅ G列:打数の関数
=B2-C2-D2-E2-F2

打席数(B2)から、四球(C2)・死球(D2)・犠打(E2)・犠飛(F2)を順に引くだけ。シンプルなぶん、あとから見直しても間違いに気づきやすい式になっています。

動作確認の方法

関数を入力したら、実際に正しく動いているかを次の手順で確かめておきましょう。

確認① フォームからテストデータを送信してみます(例:田中選手で三安・遊ゴ・四球・犠打・打なし×6)
確認② 年間シートの打席数が「4」になっているか確認します(四球・犠打・三安・遊ゴの4打席分)
確認③ 四球数が「1」、犠打数が「1」になっているかもあわせて確認します
確認④ 打数が「2」(4−1−1=2)になっていれば成功です
⚠️ 打席数・打数がおかしい場合のチェックポイント
  • 「打なし」の表記がフォームと完全に一致しているか(スペースや全角・半角のズレに注意)
  • 「四球」「死球」「犠打」「犠飛」の表記がフォームと完全に一致しているか
  • 関数の列指定(G〜P列)が、フォームの回答シートの列と噛み合っているか
  • 選手名(A列)の表記が、フォームの選択肢と完全に一致しているか

敵失・野選は打数に含まれることを確認する

敵失・野選は除外リストに入っていません。そのため、何もしなくても自動的に打数へカウントされます。念のため確認しておきましょう。

記号 打席数 除外項目か 打数
敵失❌(除外しない)
野選❌(除外しない)

敵失・野選は出塁こそできますが、安打としては扱われません。打数には数えられるため、結果として打率を押し下げる方向に働きます。これは野球のルールに沿った、正しい挙動です。

✅ この記事のまとめ
  • 打席数・四球・死球・犠打・犠飛を別々の列でカウントする
  • 打数は =打席数 − 四球 − 死球 − 犠打 − 犠飛 で求める
  • 除外項目はすべて完全一致のCOUNTIFSでよい(ワイルドカード不要)
  • 敵失・野選は除外対象ではないため、打数に自動的にカウントされる
  • テストデータを流し込んで、計算が正しいか必ず確認する

次回予告

次回のテーマは「COUNTIFSで選手ごとに絞り込む」です。これまで登場したCOUNTIFSの条件を整理しながら、年間シートで選手ごとの成績を正確に集計する仕組みを、全体像として一気にまとめていきます。

▶︎ 次回:【第40回】COUNTIFSで選手ごとに絞り込む

コメント

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