前回は塁打数を安打の種類ごとに重みをつけて計算する方法を学びました。今回は打点・本塁打・盗塁を年間(野手)シートに集める関数を作ります。
これら3つの項目は、それぞれ「どのシートに」「どのような形式で」記録されているかが少し違います。整理してみると、実はすでに学んだSUMIFSとCOUNTIFSを組み合わせるだけで完成します。
3項目の記録場所と集計方法を整理する
まず打点・本塁打・盗塁のそれぞれが、フォームのどこに記録されているかを確認しましょう。
| 項目 | フォームの列 | 入力形式 | 集計に使う関数 |
|---|---|---|---|
| 打点 | Q列 | 数値(0・1・2・3…) | SUMIFS(数値を合計) |
| 盗塁 | R列 | 数値(0・1・2・3…) | SUMIFS(数値を合計) |
| 本塁打 | G〜P列(打席列) | 記号(「*本*」を含む) | 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列に変えるだけです。
=SUMIFS('フォームの回答(野手)'!R:R,'フォームの回答(野手)'!E:E,A2)
Q列→R列に変えるだけで完成です。第43回で詳しく解説しているので、そちらも参考にしてください。
本塁打の関数(COUNTIFS)
本塁打は打席結果の選択肢として記録されています。「左本」「右本」「中本」など記号に「本」が含まれるものをCOUNTIFSのワイルドカードで数えます。
=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つです。
| 項目 | 関数の種類 | 参照する列 |
|---|---|---|
| 打点 | SUMIFS | Q列(打点の数値) |
| 盗塁 | SUMIFS | R列(盗塁の数値) |
| 本塁打 | COUNTIFS(×10行) | G〜P列(打席結果の記号) |
実際のデータでそれぞれの年間合計値を確認してみましょう。
| 選手名 | 打点 | 本塁打 | 盗塁 |
|---|---|---|---|
| SUZUKI | 6 | 0 | 2 |
| TANAKA | 3 | 0 | 7 |
| SATO | 4 | 0 | 7 |
| YAMAMOTO | 3 | 1 | 2 |
| YAMAOKA | 5 | 1 | 0 |
本塁打はYAMAMOTOさんの「左本」、YAMAOKAさんの「走本」がそれぞれカウントされています。
SUMIFSとCOUNTIFSの使い分けをあらためて整理する
今回で、SUMIFSとCOUNTIFSの使い分けのパターンが出揃いました。
| 集計したいもの | 入力形式 | 使う関数 |
|---|---|---|
| 安打数・三振数など「何回あったか」 | 打席結果の記号 | COUNTIFS |
| 打点・盗塁など「数値の合計」 | 数値列(Q列・R列) | SUMIFS |
打点は「1試合に2打点」「1試合に0打点」のように数値で入力しているため、COUNTIFSで行数を数えると「打点を記録した行数(試合数)」になってしまい、打点の合計にはなりません。数値の合計はSUMIFSを使います。
- 打点・盗塁はフォームのQ列・R列に数値で入っているためSUMIFSで合計する
- 本塁打は打席結果の記号として入っているためCOUNTIFSで数える
- 本塁打の条件は
"*本*"。「走本」(ランニングホームラン)も自動的に含まれる - 「数値の合計→SUMIFS」「記号のカウント→COUNTIFS」の使い分けを覚えておく
- 2行目の関数を他の行にコピーするだけで全選手の集計が完成する
次回予告
次回からはいよいよ「打撃成績の関数を作る」章に入ります。まずは「打率の計算式:IFERRORで0除算エラーを防ぐ」。打数が0のときにエラーが出ないようにする処理と、打率を正しく計算する関数を作ります。



コメント