前回はワイルドカード(*)を使って安打系の記号をカウントする方法を学びました。今回はそれを年間(野手)シートに実際に適用して、選手ごとの安打数を自動集計する関数を完成させます。
ここで登場するのがCOUNTIFS(カウントイフエス)という関数です。COUNTIFが1つの条件でカウントするのに対して、COUNTIFSは複数の条件でカウントできます。
COUNTIFとCOUNTIFSの違い
| 関数 | 条件数 | 使い道 |
|---|---|---|
| COUNTIF | 1つ | 「安を含む」など単純な条件でカウント |
| COUNTIFS | 複数 | 「田中選手の」「安を含む」など複数条件でカウント |
=COUNTIFS( 範囲1, 条件1, 範囲2, 条件2, 範囲3, 条件3 … )
範囲と条件をセットで複数並べます。すべての条件を同時に満たす行だけがカウントされます。
年間(野手)シートで安打数をカウントする
年間シートでは「フォームの回答(野手)シートの中から、この選手の安打を含む打席結果をカウントする」という処理を行います。
必要な条件は以下の2つです。
| 条件 | 参照列 | 内容 |
|---|---|---|
| 条件① | E列(選手名) | 「田中」と一致する行だけを対象にする |
| 条件② | G〜P列(打席結果) | 「安」を含む記号をカウントする |
実際の関数を組み立てる
年間(野手)シートのA列に選手名が入っている場合、B列に安打数を表示する関数はこうなります。
=COUNTIFS( 'フォームの回答(野手)'!E2:E1000, A2, 'フォームの回答(野手)'!G2:G1000, "*安*" ) +COUNTIFS( 'フォームの回答(野手)'!E2:E1000, A2, 'フォームの回答(野手)'!H2:H1000, "*安*" )
ただしこれだと第一打席(G列)と第二打席(H列)を別々に書く必要があり、10打席分繰り返すと関数がとても長くなります。
第一〜第十打席(G〜P列)をまとめて処理するには、SUMPRODUCT関数を使う方法があります。これにより1つの式で10打席分を一括処理できます。詳しくは第40回で解説しますが、まずCOUNTIFSの基本を理解することが先決です。
打席列を1列ずつ処理する方法(基本版)
まず基本的な方法として、第一打席〜第十打席を1列ずつ足し算する関数を見ておきましょう。
=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,"*安*")
長く見えますが、構造は同じ式の繰り返しです。「E列が田中かつG列が*安*」→「E列が田中かつH列が*安*」…という10回の足し算です。
安打の総数(単打+二塁打+三塁打+本塁打)を求める
安打の総数は上記の「単打」版に加えて「*2*」「*3*」「*本*」の3パターンも同様に足します。
安打の総数 = 「*安*」の合計(第一〜第十打席) + 「*2*」の合計(第一〜第十打席) + 「*3*」の合計(第一〜第十打席) + 「*本*」の合計(第一〜第十打席)
1つのセルに全部詰め込むと長くなりすぎてデバッグが大変です。年間シートでは「単打数」「二塁打数」「三塁打数」「本塁打数」を別々の列に持ち、安打の総数はそれらを合算する列を作るとシンプルになります。
この関数を2行目に入れたら3行目以降はどうするか
年間シートの2行目に田中選手の関数を入れたら、3行目(鈴木選手)以降はA2の部分をA3・A4…に変えるだけです。
- 2行目の関数が完成したら、そのセルをコピーする
- 3行目以降の同じ列のセルを選択して貼り付ける
- A2の部分が自動的にA3・A4…に変わる(相対参照の仕組み)
- COUNTIFSはCOUNTIFの複数条件版、範囲と条件をセットで複数並べる
- 年間シートでは「選手名が一致」かつ「打席結果が*安*」の2条件でカウント
- 第一〜第十打席(G〜P列)を1列ずつCOUNTIFSで処理して足し算する
- 安打の総数は単打+二塁打+三塁打+本塁打の合計
- 2行目の関数が完成したらコピーで3行目以降に展開できる
次回予告
次回は「『二塁打』『三塁打』『本塁打』を別々にカウントする」。今回学んだCOUNTIFSをベースに、長打系の記号を種類別にカウントする関数と、重複カウントを防ぐ考え方を解説します。


コメント