前回は、安打の種類ごとに重みをつけて塁打数を計算する方法を学びました。今回のテーマは打点・本塁打・盗塁を年間(野手)シートに集める関数です。
この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のときにエラーが出ないようにする処理と、打率を正しく計算する関数を作っていきます。



コメント