Excelやスプレッドシートで特定の文字を含んだ文字列をカウントしたいケースがあると思います。そのような場合では、COUNTIF関数でワイルドカードを用いたあいまい検索ができると大変便利です。
この記事では、COUNTIF関数でワイルドカードで文字列をカウントする方法について解説していきます。尚、数字や日付にはワイルドカードは使えないので代替方法をご紹介します。
この記事の内容
ワイルドカードであいまい検索する方法
「アスタリスク」であいまい検索する
ワイルドカード「*」は、0文字以上の任意の文字列を表します。
上の表での商品番号列から「B」から始まる商品名を検索したい場合は条件に「”B*”」と入力すると、「B」+「任意の文字列」がカウントされます。
=COUNTIF(B5:B13,"B*")
0文字以上の任意の文字列なので「B」のみのセルもカウントされてしまうことには注意しましょう。
「クエスチョン」であいまい検索する
ワイルドカード「?」は、任意の1文字を表します。
「B○○〇」の商品番号を検索したい場合は条件に「”B???”」と入力すると、「B」+「任意の文字3文字」の文字列がカウントされます。
=COUNTIF(B5:B13,"B???")
このように文字数を指定したい場合のあいまい検索に「?」は便利です。
数字/日付はワイルドカードは使えない
ワイルドカードのあいまい検索でカウントできるのは文字列のみです。
数字や日付の場合は比較演算子での条件設定になるのでワイルドカードは使えません。状況に応じた代替案をご紹介します。
ケース1: 数値の範囲でカウントする
例えば、在庫数が21個、27個・・・などの20〜29個のセルをカウントしたいようなケースがあると思います。
上記の例では、「20以上30未満」という条件なので20以上のCOUNTIF関数の結果から30以上をマイナスすることで取得できます。
=COUNTIF(D5:D13,">=20") - COUNTIF(D5:D13,">=30")
COUNTIF関数で数値の範囲指定のサンプルは次のページでも解説しています。
ケース2: 特定の日付の範囲でカウントする
続いては、発注日が「2019/11/??」の商品など、特定の月の日付になっているデータをカウントしたいケースです。
これも言い換えると「2019/11/01以上」かつ「2019/12/01未満」という条件なので上記同様に範囲指定で対応できます。
=COUNTIF(E5:E13,">=2019/11/01") - COUNTIF(E5:E13,">=2019/12/01")
ケース3: 一部の日付でカウントする
2019/01/01, 2019/10/01・・・など月初のみをカウントしたいケースです。
上記の場合は、発注予定日から日付の部分だけを文字列として別セルに切り出します。
日付の切り出しはTEXT関数「=TEXT(日付, “dd”)」で行うことができます。ちなみに月だけを取り出す場合は「=TEXT(日付, “mm”)」です。
検索列を作れたら、あとは通常の文字列と同様にカウントできるようになります。
=COUNTIF(F5:F13,"01")
以上、COUNTIF関数でワイルドカードを利用して文字列をカウントする方法でした。「*」と「?」を使い分けられると式の作成がラクになります。
コメント