ExcelのFIND・SEARCH関数の違いと使い方|ワイルドカードであいまい検索する方法

ExcelでFIND関数とSEARCH関数はどちらも文字列の中から特定の文字を探して、その位置を返します。大きな違いは2つです。①FIND関数は大文字・小文字を区別するがSEARCH関数は区別しない、②SEARCH関数は「*」や「?」などのあいまい検索(ワイルドカード)が使えるがFIND関数は使えない、という点です。

この記事では、次の内容を順番に解説します。

  • FIND関数・SEARCH関数の基本の使い方
  • 2つの関数の違い
  • ワイルドカードを使ったあいまい検索
  • IFと組み合わせて「含まれているか」を判定する方法

FIND関数・SEARCH関数とは?

どちらも文字列の中から探したい文字を検索して、その文字が何文字目にあるかを返します。

=FIND(探したい文字, 検索する文字列)
=SEARCH(探したい文字, 検索する文字列)

たとえば「東京都渋谷区」の中で「渋」が何文字目にあるかを調べるには:

=FIND("渋", "東京都渋谷区")   ' → 4(4文字目)
=SEARCH("渋", "東京都渋谷区") ' → 4(同じ結果)

文字が見つからない場合は、どちらもエラー(#VALUE!)が返ります。

FIND関数とSEARCH関数の違いは?

2つの関数の主な違いをまとめます。

  • 大文字・小文字の区別:FIND関数は区別します。SEARCH関数は区別しません。
  • ワイルドカード(あいまい検索):FIND関数は使えません。SEARCH関数は使えます。
' 大文字・小文字の区別の例
=FIND("a", "Apple")   ' → エラー(aとAは別扱い)
=SEARCH("a", "Apple") ' → 1(大文字・小文字を区別しない)

日本語を検索する場合はどちらを使っても結果は同じですが、英字の大文字・小文字を区別したい場合はFIND、区別しなくていい場合はSEARCHを使いましょう。

ワイルドカードを使ったあいまい検索とは?

SEARCH関数では「*」(アスタリスク)と「?」(クエスチョンマーク)を使ったあいまい検索ができます。

  • *(アスタリスク):0文字以上の任意の文字列に一致します。
  • ?(クエスチョンマーク):任意の1文字に一致します。
' *(アスタリスク)の例
=SEARCH("東*区", "東京都渋谷区") ' → 1(「東」で始まり「区」で終わる文字列を検索)

' ?(クエスチョンマーク)の例
=SEARCH("東?都", "東京都渋谷区") ' → 1(「東」+任意の1文字+「都」を検索)

ただし、ワイルドカードを使ったSEARCH関数は「何文字目にあるか」を返すので、単純に「含まれているかどうか」を確認したい場合はIFと組み合わせる方が便利です。

「特定の文字が含まれているか」を判定するには?

SEARCH関数の結果はエラーになるか数字になるかで「含まれているかどうか」を判定できます。IFERRORと組み合わせるのが基本です。

' A1セルに「東京」が含まれていれば「含む」、なければ「含まない」と表示する
=IF(IFERROR(SEARCH("東京", A1), 0) > 0, "含む", "含まない")

SEARCH が文字を見つけると1以上の数字を返し、見つからなければエラーになります。IFERROR でエラーを0に変換して、0より大きければ「含む」と判定しています。

まとめ

FIND・SEARCH関数は「文字が何文字目にあるか」を調べる関数です。使い分けのポイントは2つです。

  • 大文字・小文字を区別したい:FIND関数を使う。
  • ワイルドカードであいまい検索したい:SEARCH関数を使う。
  • 含まれているか判定したいIF(IFERROR(SEARCH(...), 0) > 0, "含む", "含まない") の形を使う。
  • 文字が見つからない場合:どちらもエラー(#VALUE!)が返るので、IFERRORと組み合わせて使う。

よくある質問

FIND・SEARCH関数はVBAのInStr関数と同じ?

考え方は同じです。どちらも文字列の中から特定の文字を探して位置を返します。VBAのInStr関数はマクロの中で使い、FIND・SEARCH関数はExcelのセルの中で使う、という違いがあります。

2番目以降に出てくる文字の位置を調べたい場合は?

FIND・SEARCH関数の3番目の引数に検索を始める位置を指定できます。たとえば =FIND("a", "banana", 3) と書くと3文字目以降から検索します。最初に見つかった位置の次から検索することで2番目の位置を取り出せます。

COUNTIFでもあいまい検索はできる?

はい、COUNTIFでも「*(アスタリスク)」を使ったあいまい検索ができます。たとえば =COUNTIF(A:A, "*東京*") でA列に「東京」が含まれるセルの数を数えられます。「含まれているか」を数えたいだけならCOUNTIFの方がシンプルです。

エラーが出たときにエラーを表示させたくない場合は?

IFERRORを使います。=IFERROR(FIND("探す文字", A1), "") のように書くと、見つからない場合に空白が表示されます。エラーの代わりに0や「なし」を表示することもできます。

FIND・SEARCH関数で取り出した位置を使って文字を切り出すには?

MID関数やLEFT・RIGHT関数と組み合わせると、特定の文字の前後の文字列を取り出せます。たとえば「@」の位置をFINDで調べて、その前の文字列をLEFTで取り出すとメールアドレスからユーザー名だけを抜き出すといったことができます。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール