IF関数の論理式内ではワイルドカード(*,?)を直接取り扱うことはできません。「で始まる/で終わる/を含む、といった条件で場合分けをする」という処理をする場合は少々複雑になります。これらの処理はCOUNTIF関数と組み合わせて間接的にワイルドカードを使用し、完成させます。以下の記事で流れを紹介します。
IF関数内で「で始まる/で終わる/を含む」を使う(部分一致処理)
IF関数において
[○○を含む場合はX,それ以外はY]
[特定の文字が入っていたらX,それ以外はY]
(XやYは文字や数値や計算式)
のような処理をする場合は、論理式欄に【COUNTIF関数+ワイルドカード】を用いるのがよいでしょう。[COUNTIF関数で特定の文字「を含む」セルを数える]については別記事にあるのでご参照ください。
基本的な流れとしては
COUNTIFで「○を含む」かどうかを調べた結果が「1」ならばX、それ以外はY
という処理をします。
XとYはあなたが使う文字列や式に置き換えてください。
またCOUNTIF関数の調整をすることで「○を含む」(部分一致)だけでなく、「○で始まる」(前方一致)、「○で終わる」(後方一致)の処理も可能です。
解説と部分一致サンプルの操作
以下のような表で、
B列に「崎」を含んでいれば"X",それ以外は"Y"
としてみます。結果はC列に表示させます。
メンバー | 住所 | 検索結果1 | 検索結果2 | キーワード | |
A10001 | 横浜市 | 崎 | |||
A10002 | 川崎市 | ||||
A10003 | 中央区 | ||||
A10004 | 北区 | ||||
A10005 | 横須賀市 | ||||
A10006 | 高崎市 | ||||
A10007 | 大浜区 |
定数(決まった値)で「~を含む」を指定する
セルB2が「崎」を含んでいるかを検査する式は
=COUNTIF(B2,"*崎*")
で、含んでいれば「1」となります。
[セルB2の中で「崎」を含んでいるセルの数]を調査する式だからです。
含んでいなければ「0」となります。
したがって論理式には
=COUNTIF(B2,"*崎*")=1
を用います。
最終的に作成するIF関数は
=IF(COUNTIF(B2,"*崎*")=1,"X","Y")
とします。
なお、「崎」が1つではなく複数でもよしとするならば「=」の部分を「>=」として以下のようにします。
=IF(COUNTIF(B2,"*崎*")>=1,"X","Y")
セル参照(変わることがある値)で「~を含む」を指定する
また
「崎」を含む
ではなく
セルF2に入力されている値を含む
とするならば、論理式は
=COUNTIF(B2,"*" & $F$2 & "*")=1
とします。下にコピーすることを考慮してセルF2部分は絶対参照の設定をします。
最終的には以下のような式となります(D列に作成した)。
=IF(COUNTIF(B2,"*"&$F$2&"*")=1,"X","Y")
なお、セルF2で入力した値を2つ以上含んでもよい場合には「=」の部分を「>=」とし以下のような計算式にします。
=IF(COUNTIF(B2,"*"&$F$2&"*")=1,"X","Y")
IF関数の部分一致:まとめとコピペ用資料
セルB2の値を検査して、適合している場合はX、不適合の場合はYを返すサンプルです。
部分一致:「~を含む」の例(定数・キーワードが「崎」の場合)
=IF(COUNTIF(B2,"*崎*")>=1,"X","Y")
部分一致:「~を含む」の例(参照・キーワードが入力されているセルが「F2」の場合)
=IF(COUNTIF(B2,"*"&$F$2&"*")>=1,"X","Y")
前方一致:「~で始まる」の例(定数・キーワードが「崎」の場合)
=IF(COUNTIF(B2,"崎*")>=1,"X","Y")
前方一致:「~で始まる」の例(参照・キーワードが入力されているセルが「F2」の場合)
=IF(COUNTIF(B2,$F$2&"*")>=1,"X","Y")
後方一致:「~で終わる」の例(定数・キーワードが「崎」の場合)
=IF(COUNTIF(B2,"*崎")>=1,"X","Y")
後方一致:「~で終わる」の例(参照・キーワードが入力されているセルが「F2」の場合)
=IF(COUNTIF(B2,"*"&$F$2)>=1,"X","Y")
コメント