1/03/2022

Excel。セル内の文字検索。IF関数ではワイルドカードが使えません。【Character search】

Excel。セル内の文字検索。IF関数ではワイルドカードが使えません

<IF+COUNTIF関数+ワイルドカード>

セル内に横浜市という文字が含まれているかどうかを、検索したい時には、「横浜市*」というように、ワイルドカードをつかうことで、検索することができます。


ただ、次のような表の場合、ちょっと困ったことが発生します。


C列の「○×」は、B列の市区町村のデータで、「横浜市」という文字が含まれていれば、「○」そうでなければ、「×」と算出させています。


C2の数式は、IF関数を使えば簡単に算出できると思ったら、トラブルが発生します。

C2の数式は、

=IF(COUNTIF(B2,"横浜市*"),"○","×")

と設定しています。


なぜ、COUNTIF関数をつかっているのか、理由は、意外かもしれませんが、IF関数の一番目の引数の論理式に「ワイルドカード」が使えないからです。


検索でワイルドカードを使う方法と同じ手法で、IF関数を作ってみるとわかります。

C2に次のように、入力します。

オートフィルで数式をコピーしてみると、算出結果がおかしいことがわかります。

=IF(B2="横浜市*","○","×") 


横浜市が含まれているデータも「×」と算出されています。


比較演算子とセル番地を使う場合のように、「&(アンパサンド)」で結合させないといけないかと考えて、次のようにC2の数式を変更してみたとしても、横浜市が含まれているデータも「×」と算出されてしまいます。

=IF(B2="横浜市"&"*","○","×")


IF関数の論理式には、ワイルドカードをつかった論理式を設定することができないことがわかります。


そこで、COUNTIF関数をつかって、論理式を設定します。

COUNTIF関数は、ワイルドカードを、COUNTIF関数の二番目の引数である「検索条件」で使用することができるからです。


なので、最初に紹介した数式のように、

=IF(COUNTIF(B2,"横浜市*"),"○","×")

とIF+COUNTIF関数のネストで数式をつくることで、セル内に一部のデータが含まれている場合でも、確認することができます。


なお、論理式は、

COUNTIF(B2,"横浜市*") としています。「=」とかありませんが、横浜市という文字が含まれていたら「TRUE」。

含まれていなければ、「FALSE」を返してくれます。


TRUEならば、「真」。

FALSEならば、「偽」。

なので、「○」と「×」をそれぞれ算出してくれるというわけです。


Excelには、今回のケースのように、簡単そうに思えても、イメージ通りにいかず、意外とアイディアが必要となるケースがあるようです。


なお、最近追加されたIFS関数でもCOUNTIF関数をつかわないといけないので、ワイルドカードをつかうことはできないようです。