第36回 「安打」を含む記号をすべてカウントする

関数・自動化

前回はワイルドカード(*)を使って、安打系の記号をまとめてカウントする考え方を学びました。今回はいよいよそれを年間(野手)シートに組み込み、選手ごとの安打数を自動で表示する関数を完成させましょう。

ここで主役になるのがCOUNTIFS(カウントイフエス)という関数です。COUNTIFが条件を1つだけ指定できるのに対し、COUNTIFSは複数の条件を同時に指定できます。

COUNTIFとCOUNTIFSの違い

関数 条件数 使い道
COUNTIF1つ「安を含む」など単純な条件でカウント
COUNTIFS複数「田中選手の」「安を含む」など複数条件でカウント
✅ 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列)を1つずつ別に書かなければなりません。10打席分すべてを並べると、関数はかなり長くなってしまいます。

📝 SUMPRODUCTを使うとスッキリ書ける

第一〜第十打席(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をベースに、長打系の記号を種類別に数える関数と、重複カウントを防ぐための考え方を解説していきます。

▶︎ 次回:【第37回】「二塁打」「三塁打」「本塁打」を別々にカウントする

コメント

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