IF(イフ)関数で処理分岐を行うための条件を入れる時、「*」(アスタリスク)や「?」(クエスチョン)のワイルドカードを使わないとどうにもならないケースがあります。
例えばこちらの例、B列の「配送先住所」が東京都の住所であれば、C列の「即配便」の列に「対象」と表示させたいのですが・・・
同じ「東京都」でも住所は一定ではないので、条件は「東京都で始まり、後に続く文字列は問わず」としなければいけません。
そこで論理式にワイルドカードを使って(住所のセル)=”東京都*” と入れてみたのですが、結果は反応なしです。
IF関数はワイルドカードに対応していないため、「*」を入れてもそれは単なる「アスタリスクという記号」として認識されてしまいます。このような時は、COUNTIF(カウントイフ)関数を組み合わせる事で正しい結果を求めることができます。
※解説画像はMicrosoft365のExcelを使用しています
COUNTIF関数で部分一致の値をカウントする
COUNTIF関数は、指定した範囲から条件に合致するセルの個数を返す関数で、検索条件にワイルドカードを使用することが可能です。また、「指定した範囲」というのは必ず複数のセル範囲でなければいけないという事はありません。
検索する範囲は式1つに対し1つのセルに限定し、検索条件に合致するものがあるかないかを判定させれば、数えるセルは最大でも1つしかないので、結果は必ず「1」か「0」のどちらかになります。
こちらは実際にセルC3にCOUNTIFの式を入れてみたところです。範囲はB3、検索条件は「”東京都*”」としています。B3に入力されている住所は神奈川県ですので結果は「0」(東京都では始まらない)となります。
数式はそのままで、B3の値を東京都の住所に変更してみると、結果は「1」(東京都で始まる)になります。
つまり、
- COUNTIF(B3,”東京都*”)=1 ・・・住所が東京都で始まる
- COUNTIF(B3,”東京都*”)=0 ・・・住所が東京都で始まらない
この2つの式のどちらかをIF関数の論理式の部分に組み込んでやると、「東京都で始まる住所」と「東京都ではない住所」で表示する値を変える事ができる、という事です。
IF関数の論理式にCOUNTIF式を入れる
それでは、最初の表に話を戻し、IF関数を修正してみます。
IFの論理式に入れていた「B3=”東京都*」の部分を、先ほどのCOUNTIFの式と置き換えます。ここでは結果が「1」(東京都で始まる住所)の方を使いますので、値が真の場合に「対象」、値が偽の場合に「空白」を表示させます。
これで、住所が東京都で始まる行は「対象」と表示され、それ以外の住所の行は空白になります。
IF関数とCOUNTIF関数の使い方を見たい方は
・【Excel】「もし〇〇だったらどうする?」IF関数を使ってみよう
・【Excel】条件に一致したセルの個数を数える「COUNTIF」の使い方
の回をご参考にどうぞ。