Excel。検索文字を含むなら「○」という判定を手早く行うにはどうしたらいいの
<IFERROR+IF+SEARCH関数>
東京都の23区内なのかなど、セル内に該当する文字が含まれているのかを判定したい場合、単純にIF関数だけでは対応することができません。
次の表をつかって説明します。
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関数をつかう必要があります。