第46回 打点・本塁打・盗塁を年間集計シートに集める

関数・自動化

前回は塁打数を安打の種類ごとに重みをつけて計算する方法を学びました。今回は打点・本塁打・盗塁を年間(野手)シートに集める関数を作ります。

これら3つの項目は、それぞれ「どのシートに」「どのような形式で」記録されているかが少し違います。整理してみると、実はすでに学んだSUMIFSとCOUNTIFSを組み合わせるだけで完成します。

3項目の記録場所と集計方法を整理する

まず打点・本塁打・盗塁のそれぞれが、フォームのどこに記録されているかを確認しましょう。

項目 フォームの列 入力形式 集計に使う関数
打点Q列数値(0・1・2・3…)SUMIFS(数値を合計)
盗塁R列数値(0・1・2・3…)SUMIFS(数値を合計)
本塁打G〜P列(打席列)記号(「*本*」を含む)COUNTIFS(該当打席を数える)
📝 本塁打だけCOUNTIFSになる理由

打点と盗塁はフォームで「数値」として入力するため、SUMIFSで合計できます。一方、本塁打はフォームの「打席結果」の選択肢(「左本」「右本」など)として記録されているため、打席結果の列をCOUNTIFSで数える必要があります。第43回で盗塁のSUMIFSを、第37回で本塁打のCOUNTIFSを学んだ内容のおさらいです。

打点の関数(SUMIFS)

打点はフォームのQ列に数値で入力されています。選手名で絞り込んで、その列の数値を合計します。

✅ 打点の関数
=SUMIFS('フォームの回答(野手)'!Q:Q,'フォームの回答(野手)'!E:E,A2)
  • 'フォームの回答(野手)'!Q:Q:打点が入っている列(合計したい列)
  • 'フォームの回答(野手)'!E:E:選手名が入っている列(絞り込む条件の列)
  • A2:年間シートのA2セル(集計対象の選手名)

実際のデータで確認してみましょう。SUZUKIさんの打点を試合ごとに見ると次のようになっています。

試合 その試合の打点
第1試合0
第2試合2
第3試合0
第4試合2
第5試合1
第6試合〜1…
年間合計(SUMIFS)6

SUMIFSがSUZUKIという名前の行のQ列をすべて足し合わせて、年間打点6が自動で計算されます。

盗塁の関数(SUMIFS)

盗塁はR列に入っています。打点と同じ構造なので、列をR列に変えるだけです。

✅ 盗塁の関数(第43回のおさらい)
=SUMIFS('フォームの回答(野手)'!R:R,'フォームの回答(野手)'!E:E,A2)

Q列→R列に変えるだけで完成です。第43回で詳しく解説しているので、そちらも参考にしてください。

本塁打の関数(COUNTIFS)

本塁打は打席結果の選択肢として記録されています。「左本」「右本」「中本」など記号に「本」が含まれるものをCOUNTIFSのワイルドカードで数えます。

✅ 本塁打の関数(第37回のおさらい)
=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,"*本*")

"*本*" は「本という文字を含むすべての記号」を拾います。「左本」「右本」「中本」どれもこの条件で一度にカウントできます。

📝 「走本」(ランニングホームラン)も含まれることを確認する

実際のデータを見ると「走本」(ランニングホームラン)という記号も使われています。「走本」にも「本」が含まれているため、"*本*" の条件で正しくカウントされます。わざわざ別途対応する必要はありません。

3つの関数を並べて確認する

整理すると、年間(野手)シートに追加する関数は次の3つです。

項目 関数の種類 参照する列
打点SUMIFSQ列(打点の数値)
盗塁SUMIFSR列(盗塁の数値)
本塁打COUNTIFS(×10行)G〜P列(打席結果の記号)

実際のデータでそれぞれの年間合計値を確認してみましょう。

選手名 打点 本塁打 盗塁
SUZUKI602
TANAKA307
SATO407
YAMAMOTO312
YAMAOKA510

本塁打はYAMAMOTOさんの「左本」、YAMAOKAさんの「走本」がそれぞれカウントされています。

SUMIFSとCOUNTIFSの使い分けをあらためて整理する

今回で、SUMIFSとCOUNTIFSの使い分けのパターンが出揃いました。

集計したいもの 入力形式 使う関数
安打数・三振数など「何回あったか」打席結果の記号COUNTIFS
打点・盗塁など「数値の合計」数値列(Q列・R列)SUMIFS
⚠️ 打点をCOUNTIFSで数えると正しくカウントできない

打点は「1試合に2打点」「1試合に0打点」のように数値で入力しているため、COUNTIFSで行数を数えると「打点を記録した行数(試合数)」になってしまい、打点の合計にはなりません。数値の合計はSUMIFSを使います。

✅ この記事のまとめ
  • 打点・盗塁はフォームのQ列・R列に数値で入っているためSUMIFSで合計する
  • 本塁打は打席結果の記号として入っているためCOUNTIFSで数える
  • 本塁打の条件は "*本*"。「走本」(ランニングホームラン)も自動的に含まれる
  • 「数値の合計→SUMIFS」「記号のカウント→COUNTIFS」の使い分けを覚えておく
  • 2行目の関数を他の行にコピーするだけで全選手の集計が完成する

次回予告

次回からはいよいよ「打撃成績の関数を作る」章に入ります。まずは「打率の計算式:IFERRORで0除算エラーを防ぐ」。打数が0のときにエラーが出ないようにする処理と、打率を正しく計算する関数を作ります。

▶︎ 次回:【第47回】打率の計算式:IFERRORで0除算エラーを防ぐ

コメント

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