Excel

ある文字列を含むか調べる方法【#Excel #文字列 #中級者】

せっかちなあなたは、とりあえずこれを書け。

=IFERROR(FIND(“ある文字列”,A1),0)>0

=COUNTIF(A1,”*ある文字列*”)>0

=SUBSTITUTE(A1,”ある文字列”,””)<>A1

以上。

……さて、あなたは、調べようと思ってここに来たのでしょう。

エクセルに入力された文字列に

ある文字列が
含まれているか

を。

他のプログラミング言語では、
ある文字列が

  • 含まれている場合にはtrue
  • 含まれていない場合にはfalse

を返す「include関数」が用意されていることがありますが、
エクセルには用意されていません。

そのため、エクセルに入力された文字列に

ある文字列が含まれているか

を調べるためには、他の目的で用意された別の関数をうまく使って調べる必要があります。

具体的な数式は冒頭に書いた通りですが、

  • COUNTIF関数
  • FIND関数
  • SUBSTITUTE関数

を使うことで指定の文字列が含まれているかを調べることはなぜか、解説します。

COUNTIF関数+ワイルドカード(初心者向け)

画像の通り、A1に「ある文字列」という文字列が含まれているので、TRUEが表示されています。なぜこの数式で「ある文字列」が含まれていることが判定できるのでしょうか。FIND関数よりも簡単ですが、ワイルドカードについての説明が必要になります。

COUNTIF関数

=COUNTIF(A1,”*ある文字列*“)>0

COUNTIF関数はご存知でしょう。指定の範囲内にある条件に当てはまるセルの数を数える関数です。検索対象のセルが一つしかないので、必ず1か0のどちらかが表示されます。ここで問題なのが、「*(アスタリスク)」です。

「*」は、ワイルドカードの一種で、ワイルドカードとは、他のいろいろな文字の代わりになる文字です。

「*」は、0文字以上の任意の文字列の代わりになります。ざっくりいうと、何でもいい文字列です。

この例での「*ある文字列*」は、「『ある文字列』の前後に適当な文字列があるような文字列」を指します。

これにより、「ある文字列」が含まれているかどうかを判定することができます。

不等号(>0)

=COUNTIF(A1,”*ある文字列*”)>0

先のCOUNTIF関数で1か0が表示されるので、ある文字列が含まれている場合にはTRUE、含まれていない場合にはFALSEが表示されます。

例:千を含む四字熟語を探す

IFERROR+FINDと同じ例で、エクセルに入力された四字熟語の中から、「千」を含むものを探しています。数式の計算過程が分かりやすいように、2段階に分けて書いています。ご覧の通り、先ほどと同じ結果が返っています。

IFERROR+FIND関数(中級者向け)

画像の通り、A1のセルに「ある文字列」という文字列が含まれているので、TRUEが表示されています。なぜこの数式で「ある文字列」が含まれていることが判定できるのでしょうか。数式の内側の方から順に説明します。

FIND関数

=IFERROR(FIND(“ある文字列”,A1),0)>0

FIND関数は、指定した文字列が、対象となる文字列の何番目にあるかを探す(FIND)関数です。必ず1以上の整数が表示されます。今回の例では「ある文字列」という文字列は2文字目から始まっているので、2が表示されました。もし含まれていない場合には、#VALUEのエラーが表示されます。

IFERROR関数

=IFERROR(FIND(“ある文字列”,A1),0)>0

IFERROR関数は、対象のセルにエラーが表示されている場合に、他の値を代わりに表示する関数です。今回は0に置き換えるように指定しています。エラーが表示されていない場合には、元の値をそのまま表示します。今回の例では「ある文字列」が見つかり、2が表示されているので、特に置き換えは行われず、そのまま2が表示されています。

不等号(>0)

=IFERROR(FIND(“ある文字列”,A1),0)>0

さすがに説明不要でしょうか。対象が0より大きければTRUEを、0以下であればFALSEを表示します。FIND関数では1以上の整数かエラーが表示され、IFERROR関数ではエラーだった場合に0に置き換えられるので、この不等号でTRUEかFALSEに区別することができます。

例:千を含む四字熟語を探す

エクセルに入力された四字熟語の中から、「千」を含むものを探しています。数式の計算過程が分かりやすいように、3段階に分けて書いています。

SUBSTITUTE関数(上級者向け)

画像の通り、A1に「ある文字列」という文字列が含まれているので、TRUEが表示されています。なぜこの数式で「ある文字列」が含まれていることが判定できるのでしょうか。FIND関数、COUNTIF関数と比べて発想がテクニカルなので、しっかり吸収していきましょう。

SUBSTITUTE関数

=SUBSTITUTE(A1,”ある文字列”,””)<>A1

SUBSTITUTE関数は、対象の文字列に含まれる特定の文字列を、別の文字列に置き換える関数です。この例では、A1に含まれる「ある文字列」を、空白に置き換えています。含まれていない場合には、特に何もしません。

SUBSTITUTEを使った文字列の削除はこちらの記事でも紹介しています。

関数を使ってスペースを削除する【#Excel #文字列 #初心者】あなたは、 エクセルに 入力された 文字列から スペースを 削除したいと 思ったことは ありますか。 もちろん、 基本...

この操作を行うことで、「ある文字列」が含まれる場合に、文字列が変化するというのが最大のポイントです。

不等号(<>A1)

=SUBSTITUTE(A1,”ある文字列”,””)<>A1

「ある文字列」が空白に置き換えられた後の文字列が、元の文字列と異なるかどうかを調べます。

「ある文字列」が含まれていた場合は空白に置き換えられるので、元の文字列とは異なる文字列に変化します。その結果、TRUEが表示されます。

「ある文字列」が含まれていなかった場合には何も行われないため、元と同じ文字列ですから、FALSEが表示されます。

例:千を含む四字熟語を探す

エクセルに入力された四字熟語の中から、「千」を含むものを探しています。数式の計算過程が分かりやすいように、2段階に分けて書いています。

千が含まれている文字列が変換された過程がよくわかります。