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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
