ADVERTISEMENT

【Googleスプレッドシート】FIND関数とSEARCH関数の違いと使い分け!大文字小文字の扱い

【Googleスプレッドシート】FIND関数とSEARCH関数の違いと使い分け!大文字小文字の扱い
🛡️ 超解決

Googleスプレッドシートで文字列内の特定のテキストを検索したいとき、FIND関数とSEARCH関数のどちらを使うべきか迷ったことはありませんか。どちらも似た動作をしますが、大文字小文字の扱いとワイルドカードの使用可否に大きな違いがあります。この記事では、両関数の違いを詳しく解説し、状況に応じた使い分け方をわかりやすく説明します。これを読めば、あなたのデータ検索がより正確で効率的になります。

【要点】FIND関数とSEARCH関数の違いを理解する

  • FIND関数: 大文字小文字を区別して検索します。ワイルドカードは使用できません。
  • SEARCH関数: 大文字小文字を区別せずに検索します。ワイルドカード(?や*)を使用できます。
  • 使い分けの基準: 大文字小文字を厳密に判別したい場合はFIND、柔軟に検索したい場合はSEARCHを選びます。

ADVERTISEMENT

FIND関数とSEARCH関数の基本的な違い

FIND関数とSEARCH関数は、いずれも指定した文字列が別の文字列内で最初に現れる位置を数値で返します。構文はどちらも「=FIND(検索文字列, 対象, [開始位置])」「=SEARCH(検索文字列, 対象, [開始位置])」です。最大の違いは、FINDは大文字と小文字を区別するのに対し、SEARCHは区別しない点です。また、SEARCHではワイルドカード文字(?:任意の1文字、*:任意の文字列)が使えますが、FINDでは使えません。この違いが実務での使い分けを左右します。

具体的な動作の違いを例で確認する

例えば、セルA1に「Google Sheets」と入力されているとします。FINDで「g」を検索すると、大文字小文字が区別されるため「g」は見つからずエラー(#VALUE!)になります。一方、SEARCHで「g」を検索すると「Google」の最初の文字「G」が大文字でも小文字でも一致とみなされ、位置1を返します。このように、大文字小文字を気にせずに検索したい場合にはSEARCHが便利です。

また、SEARCHではワイルドカードを使えます。例えば、セルA1に「abc-123」とあり、SEARCH(“*-*”, A1)と入力すると、ハイフンが見つかった位置4を返します。FINDではワイルドカードが使えないため、同じことを行うには複雑な数式が必要になります。このように、パターンマッチが必要な場面ではSEARCHが必須です。

FIND関数の使用例:大文字小文字を厳密に区別したい場合

パスワードやコードのように大文字小文字が意味を持つデータを検索する場合、FIND関数が適しています。例えば、社員ID「AbC123」と「abc123」は別物として扱いたいときに、SEARCHだと両方ヒットしてしまうため、FINDを使う必要があります。構文は「=FIND(“AbC”, A1)」のように記述します。大文字小文字を区別するため、検索文字列と対象のケースが完全に一致しないとエラーになることを覚えておきましょう。

SEARCH関数の使用例:大文字小文字を無視して検索したい場合

顧客名や商品名のように、表記ゆれがあるデータを検索する場合にはSEARCHが便利です。例えば、「株式会社あいう」と「株式会社アイウ」が混在していても、SEARCH(“あいう”, A1)で大文字小文字(ここではひらがな・カタカナの違いには対応しませんが、英字であれば問題ありません)を区別せず検索できます。また、ワイルドカードを使って「*株式会社*」のように部分一致検索も可能です。

使い分けのポイントと実践的な注意点

FINDとSEARCHの選択は、検索の要件によって決めます。大文字小文字を区別する必要がある場合や、ワイルドカードを使う必要がない場合はFINDを、区別する必要がなくパターンマッチが必要な場合はSEARCHを選びます。ただし、注意すべき点もいくつかあります。

FIND関数では大文字小文字が原因でエラーになるケース

FIND関数で検索文字列の大文字小文字が対象と異なると、#VALUE!エラーが発生します。例えば、セルに「Apple」とあり、FIND(“apple”, A1)とするとエラーです。このエラーを避けるには、検索前にUPPER関数やLOWER関数で大文字小文字を揃える方法もありますが、それではFINDを使う意味が薄れます。どうしても大文字小文字を区別せずにFINDを使いたい場合には、FIND(UPPER(“apple”), UPPER(A1))のように両方を大文字に変換してから検索します。

SEARCH関数でワイルドカードが予期せずマッチするケース

SEARCH関数で「?」や「*」をそのまま検索したい場合、これらの記号はワイルドカードとして解釈されるため、期待通りに動作しません。例えば、セルに「100?」とあり、SEARCH(“?”, A1)とすると、任意の1文字にマッチするため、先頭の「1」がヒットしてしまいます。文字としての「?」を検索したい場合は、チルダ「~」を前に付けて「~?」とします。同様に「*」を検索する場合は「~*」と記述します。この点はFINDでは必要ありません。

開始位置を指定する場合の注意

両関数とも第3引数に開始位置を指定できますが、FINDとSEARCHで結果が異なることがあります。例えば、大文字小文字が混在する文字列で、開始位置を途中からにすると、FINDはその位置以降で大文字小文字が一致する最初の位置を返します。SEARCHは区別しないため、開始位置以降で最初に一致する位置を返します。通常は両者同じ動作となりますが、大文字小文字の違いで結果が変わる可能性があるため注意が必要です。

ADVERTISEMENT

FIND関数とSEARCH関数の比較表

項目 FIND関数 SEARCH関数
大文字小文字の区別 区別する 区別しない
ワイルドカードの使用 不可 可(?、*、~でエスケープ)
返り値 見つかった位置(数値)、見つからないと#VALUE! 同左
使用例 =FIND(“A”,”Apple”) → 1 =SEARCH(“a”,”Apple”) → 1

まとめ

FIND関数とSEARCH関数の違いは、大文字小文字の区別とワイルドカードの使用可否です。データの性質に応じて、厳密な検索が必要ならFIND、柔軟な検索ならSEARCHを使い分けてください。例えば、製品コードの検索にはFIND、自由記述のテキスト検索にはSEARCHが適しています。また、SEARCHのワイルドカードを活用すれば、部分一致やパターンマッチが容易になります。これを機に、両関数を目的に合わせて効果的に活用してみてください。

ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。