はじめに
Excel(エクセル)のIF関数は、条件を指定して該当する場合とそうでない場合で処理を分ける事ができる関数です。
今回は、その条件にワイルドカード(あいまい検索)を使う方法をご紹介します。
ワイルドカードとは
ワイルドカードとは、文字列の検索条件として不特定の文字列を指定するための記号です。
検索したい文字列にワイルドカード記号を付与することで、あいまいな検索条件にすることができます。
| ワイルドカード記号 | 読み方 | 意味 |
| * | アスタリスク | 任意の複数文字を表す。 |
| ? | クエスチョン マーク | 任意の一文字を表す。 |
| ~ | チルダ | ?や*を検索条件として指定する場合に、文字の前に付ける |
ワイルドカードの使い方
| A | B | C | |
|---|---|---|---|
| 1 | 店舗名 | 商品名 | 金額 |
| 2 | A商店 | りんご | 100 |
| 3 | A商店 | みかん | 60 |
| 4 | BC商店 | りんご | 120 |
| 5 | Cスーパー | みかん | 80 |
そのまま使ってもうまくいかない
IF関数はワイルドカードに対応していませんので、ワイルドカード記号はそのままの文字として認識されます。
論理式IF分の文字列条件に「任意の一文字+商店」を指定
=IF(A2="?商店","商店","商店以外")
解説
=A2セルの値が”?商店”である場合は”商店”、それ以外は”商店以外”を表示
=”A商店”が”?商店”である場合は”商店”、それ以外は”商店以外”を表示
=”A商店”は”?商店”ではない
=”商店以外”
COUNTIF関数を使う
ワイルドカードが使えるCOUNTIF関数を条件に指定することでワイルドカードを使うことができます。
COUNTIF関数は、指定した条件に一致するセルの個数を取得する関数です。
この関数の条件にワイルドカードを使うことで同様の結果を得る事ができます。
倫理式「任意の一文字+商店」のセル数が1
=IF(COUNTIF(A2,"?商店"),"商店","商店以外")
COUNTIF関数は、1つのセルでも範囲指定可能です。
数値の1=TRUEとなるのを利用して、COUNTIF関数の結果をそのまま論理式に使います。ちなみに0=FALSEとなります。
解説
=A2の中で「任意の一文字+商店」であるセル数が1(TRUE)の場合は”商店”、それ以外は”商店以外を表示”
=”A商店”の中で「任意の一文字+商店」であるセル数が1(TRUE)の場合は”商店”、それ以外は”商店以外を表示”
=”A商店”の中で「任意の一文字+商店」であるセル数は1(TRUE)
=”商店”
ワイルドカードを使わずに実現する
COUNTIF関数を使うことで、ワイルドカード(あいまい検索)を使うことができますが、COUNTIF関数は条件に一致したセル数をカウントする関数ですので本来の使い方ではないという考えもあります。
そこで、少し複雑になりますが、RIGHT関数、LEFT関数、MID関数、FIND関数を使うことで同様の結果を得る事ができます。
”*”(任意の複数文字)を実現する
倫理式「任意の複数文字+”商店”」か?
=IF(RIGHT(A2,2)="商店","商店","商店以外")
RIGHT関数は、文字列の右から指定した桁数の文字列を取得する関数です。この関数を使い右から2桁の文字列が”商店”となるかを判定します。
解説
=A2の右から2文字が”商店”の場合は”商店”、それ以外は”商店以外”を表示する
=”A商店”の右から2文字が”商店”の場合は”商店”、それ以外は”商店以外”を表示する
=”商店”が”商店”の場合は”商店”、それ以外は”商店以外”を表示する
=”商店”
倫理式「”商店”+任意の複数文字」か?
=IF(LEFT(A2,2)="商店","商店","商店以外")
解説
=A2の左から2文字が”商店”の場合は”商店”、それ以外は”商店以外”を表示する
=”A商店”の左から2文字が”商店”の場合は”商店”、それ以外は”商店以外”を表示する
=”A商”が”商店”の場合は”商店”、それ以外は”商店以外”を表示する
=”A商”は”商店”ではない
=”商店以外”
論理式「任意の複数文字+”商店”+任意の複数文字」か?
=IF(IFERROR(FIND("商店",A2),0),"商店","商店以外")
FIND関数は、指定した文字列が見つからない場合にエラー値( #VALUE!)を返すため、IFERROR関数を併用します。
IFERROR関数により、FIND関数がエラー値( #VALUE!)を返した場合は0を返すようにしています。
解説
=A2の中で”商店”と一致した位置が1以上の場合は”商店”、それ以外は”商店以外”を表示する
=”A商店”の中で”商店”と一致した位置が1以上の場合は”商店”、それ以外は”商店以外”を表示する
=”A商店”の中で”商店”と一致した位置は2
=”商店”
”?”(任意の1文字)を実現する
倫理式「任意の1文字+”商店”」か?
=IF(MID(A2,2,2)="商店","商店","商店以外")
解説
=A2の左から2桁目から2桁の文字が”商店”の場合は”商店”、それ以外は”商店以外”を表示する
=”A商店”の左から2桁目から2桁の文字が”商店”の場合は”商店”、それ以外は”商店以外”を表示する
=”A商店”の左から2桁目から2桁の文字は”商店”
=”商店”
論理式「”商店”+任意の1文字」か?
右側の任意の1文字を指定する場合は、MID関数の開始位置を検索文字列の桁数-比較文字にして指定します。
MID関数の開始位置については、こちらを参照して下さい。
=IF(MID(A2,LEN(A2)-2,2)="商店","商店","商店以外")
解説
=A2の左から1桁目(A2の桁数-2)から2桁の文字が”商店”の場合は”商店”、それ以外は”商店以外”を表示する
=”A商店”の左から1桁目(3桁-2)から2桁の文字が”商店”の場合は”商店”、それ以外は”商店以外”を表示する
=”A商店”の左から1桁目から2桁の文字は”A商”
=”商店以外”
おわりに
いかがでしたでしょうか?
IF関数は、条件を指定して処理を分ける場合に有効です。
Excel関数を有効に使えば、業務を効率化することができるようになるでしょう。
一度使ってみてはいかがでしょうか。