8/15/2023

Excel。検索文字を含むなら「○」という判定を手早く行うにはどうしたらいいの【contains characters】

Excel。検索文字を含むなら「○」という判定を手早く行うにはどうしたらいいの

<IFERROR+IF+SEARCH関数>

東京都の23区内なのかなど、セル内に該当する文字が含まれているのかを判定したい場合、単純にIF関数だけでは対応することができません。


次の表をつかって説明します。

IFERROR+IF+SEARCH関数

B列に住所が入力されています。

C列に23区内ならば、「○」を表示するとします。


C2に設定する数式は、

=IFERROR(IF(SEARCH("東京都*区",B2),"○",""),"")

として、オートフィルで数式をコピーすると、完成なのですが、IF関数以外にもIFERROR関数やSEARCH関数をつかっています。


なぜIF関数以外をつかっているのかというと、IF関数の論理式に「ワイルドカード」が使えないからです。


「東京都」という文字で始まり「区」を含んでいるのかを判断させる必要が生じます。


そこで、SEARCH関数をつかって、判断させます。


IF関数にSEARCH関数をネストした数式、

=IF(SEARCH("東京都*区",B2),"○","")


オートフィルで数式をコピーしてみると、合致しないセルに「#VALUE!」というエラーが表示されています。


SEARCH関数で困るのは、合致しない場合、「#VALUE!」というエラーを表示してしまうことなんです。


つまり、偽の場合の設定よりもエラーが強いので、偽の場合の表示設定を行ってくれません。


そのため、エラーをコントロールするIFERROR関数をつかって「#VALUE!」というエラーを表示しない作業をさせる必要があるわけです。


なお、IF関数は、偽の場合を設定しないとエラーになるので、「#VALUE!」と表示されます。
そのため、「””」を設定しておきます。


また、検索するSEARCH関数と同じようにFIND関数がありますが、FIND関数は、ワイルドカードをつかうことができませんので、SEARCH関数をつかう必要があります。