【Excel】”~を含む場合” / 部分一致(LIKE)をワークシート関数で表現する方法(ISNUMBER x SEARCH / ISNUMBER x FIND)

Excel 基本動作

過去にIF関数やIFS関数を使って条件分岐を設定するワークシート関数を紹介しました。

今回は、条件分岐に部分一致を設定する方法を説明します。具体的には、ISNUMBER関数とSEARCH関数の組み合わせ、もしくはSEARCH関数の代わりにFIND関数を使う方法を説明します。結論的には、以下のような方法で設定可能です。

スポンサーリンク

条件分岐における部分一致とは?

そもそも条件分岐で部分一致を判定したいケースとはどのようなケースでしょうか。今回の例では、以下のようなテーブルデータの”Product Name”という列を使った集計をすることを考えます。”Product Name”は英語表記ですが、それらを日本語に修正します。その際、バナナミルク、バナナオレなど、”banana”を含むものはすべて”バナナ”に直したいとします。

こうした時には、”Product Name”列が”banana”という文字列を含むかどうか、という部分一致の判定をする必要があります。

実務ではこうしたケースが頻繁に発生します。メールアドレスの列に”.com”が含まれるかを判定する、製品コードが特定の文字列を含むかを判定するなどがあげられます。

スポンサーリンク

ISNUMBER関数 x SEARCH関数

さて、では条件分岐に部分一致を設定する方法を説明します。

まず紹介するのはISNUMBER 関数と SEARCH 関数の組み合わせです。SEARCH 関数は文字列内で特定のテキストが最初に現れる位置を返しますが、そのテキストが存在しない場合はエラーを返します。ISNUMBER 関数は、SEARCH の結果が数値(つまり、テキストが見つかった位置)であるかどうかを判定します。SEARCH関数とISNUMBER関数の使い方については今後詳細を掲載しますが、以下でも簡単に説明します。

SEARCH関数で以下のように引数を設定することで、A2セルで”banana”という文字列が最初に現れるのが何文字目であるかを返します。(大文字と小文字は区別されない)

結果、以下のように、大文字小文字関係なく、bananaという文字列が含まれる場合にはその番号が、含まれない場合にはエラーが返ってきます。

続いて、SEARCH関数の結果をISNUMBER関数に入れます。ISNUMBER関数は、引数(今回の場合はSEARCH関数の結果)が数値であるかどうかによって、TRUE/FALSEの2値の結果を返します。

結果は以下の通りです。バナナが含まれる場合は”TRUE”、そうでなければ”FALSE”となりました。これを、IF文の論理式に用います。

IF文を以下のように使います。もしISNUMBER関数の結果がTRUEだったら、つまり”banana”という文字列が含まれる場合は”バナナ”となるように、そうでない場合は空欄となるようにします。

結果は以下の通りです。

ここで、ISNUMBER関数がなくても同じ結果になるんじゃないの?と思う人もいるかもしれませんので、ISNUMBER関数有りの場合となしの場合の違いを以下に示します。

ISNUMBER関数がないと、SEARCH関数がエラーになった場合に、IF文の論理式がエラーになってしまい、結果もエラーになってしまいます。ISNUMBER関数を介することで、全ての結果がTRUEもしくはFALSEになるので、IF文の論理式に不可欠なのです。

ISNUMBER関数 x FIND関数

以上見てきたように、ISNUMBER関数とSEARCH関数を使って条件分岐に部分一致を設定することができます。

ただし、上で述べたように、SEARCH関数は大文字と小文字を区別しません。もし大文字と小文字を区別したい場合は、SEARCH関数の代わりにFIND関数を使うことができます。

SEARCH関数とFIND関数の結果の違いは以下の通りです。”banana”があるかどうかを探しているので、Bananaのように大文字が入っている場合、SEARCH関数では”バナナ”と判定され、FIND関数では”バナナ”ではないと判定されています。

コメント

タイトルとURLをコピーしました