• 作成日 : 2025年8月25日

SEARCH関数の使い方とは?文字列検索の基本から応用まで

ExcelのSEARCH関数とは、指定した文字列が別の文字列の中で何文字目から始まるかを調べる関数です。大文字・小文字を区別せずに検索できるため、キーワードの含有チェックや、文字列の一部を抽出する処理に適しています。

たとえば、「このセルに特定の語句が含まれているか?」「区切り文字の後ろを取り出したい」といったシーンで活用できます。

本記事では、SEARCH関数の基本構文から実践的な活用例までを網羅し、他の文字列関数(LEFT、MID、IFなど)との組み合わせや、よくあるエラーの対処法についてもわかりやすく解説します。

SEARCH関数の使い方

SEARCH関数は、特定の文字や文字列が、対象の文字列内のどこに位置するかを検索し、その開始位置を数値で返します。大文字と小文字を区別しないため、あいまいな検索に適しています。

書式

=SEARCH(検索文字列, 対象, [開始位置])
  • 検索文字列: 検索したい文字または文字列を指定します。
  • 対象: 検索の対象となる文字列、またはその文字列が入力されているセルを指定します。
  • [開始位置]: 検索を開始する位置を数値で指定します。この引数は省略可能で、省略した場合は1(先頭)から検索が開始されます。

具体例

例えば、セルA1に「株式会社ABC商事」という文字列があり、そこから「ABC」が何文字目から始まるかを知りたい場合を考えてみましょう。

A
1株式会社ABC商事

セルB1に以下の数式を入力します。

=SEARCH(“ABC”, A1)

この数式の結果は「5」となります。これは、「ABC」が「株式会社ABC商事」の5文字目から始まることを示しています。(「株」「式」「会」「社」の4文字の後に「A」が来るためです。)

開始位置を指定する例

もし、同じ文字列内で2つ目の「a」を探したい場合など、特定の場所から検索を開始したい場合は、「開始位置」引数を使用します。

例えば、セルA1に「apple banana apple」という文字列があり、2つ目の「apple」を探したい場合、1つ目の「apple」が5文字目までなので、6文字目から検索を開始するように指定します。

=SEARCH(“apple”, A1, 6)

この数式の結果は「14」となります。

SEARCH関数の利用シーン

SEARCH関数は、単独で使うこともありますが、他の関数と組み合わせることでその真価を発揮します。ここでは、実務でよく使われる利用シーンをいくつかご紹介します。

特定の文字を含むデータの抽出・絞り込み

SEARCH関数は、IF関数やISNUMBER関数と組み合わせて、特定の文字を含むデータだけを抽出したり、条件付き書式で強調表示したりする際に非常に役立ちます。

例えば、商品リストの中から「限定」という文字を含む商品だけを抽出したい場合を考えてみましょう。

AB
1商品名抽出結果
2限定セットA
3通常版B
4限定品C
5特別版D

セルB2に以下の数式を入力し、下にコピーします。

=IF(ISNUMBER(SEARCH(“限定”, A2)), “限定品”, “その他”)

  • SEARCH(“限定”, A2): セルA2に「限定」が含まれているかを検索します。含まれていれば数値(開始位置)を返し、含まれていなければエラー値(#VALUE!)を返します。
  • ISNUMBER(…): SEARCH関数の結果が数値(つまり「限定」が含まれている)かどうかを判定します。数値であればTRUE、エラーであればFALSEを返します。
  • IF(…, “限定品”, “その他”): ISNUMBER関数の結果がTRUEなら「限定品」、FALSEなら「その他」と表示します。

これにより、B列には「限定品」または「その他」が表示され、簡単に限定商品を識別できるようになります。

文字列の分割(LEFT, RIGHT, MID関数との組み合わせ)

SEARCH関数は、LEFT関数、RIGHT関数、MID関数と組み合わせて、特定の区切り文字を基準に文字列を分割する際によく利用されます。

例えば、メールアドレス「[email protected]」からユーザー名とドメイン名を分割したい場合を考えてみましょう。

ABC
1メールアドレスユーザー名ドメイン名
2[email protected]

セルB2にユーザー名を抽出する数式、セルC2にドメイン名を抽出する数式を入力します。

ユーザー名(「@」の左側)を抽出する

=LEFT(A2, SEARCH(“@”, A2) – 1)

  • SEARCH(“@”, A2): セルA2内の「@」の位置を特定します。この例では「12」を返します。
  • – 1: 「@」の1文字前までを抽出するために、結果から1を引きます。
  • LEFT(A2, …): セルA2の左端から、計算された文字数分の文字列を抽出します。

ドメイン名(「@」の右側)を抽出する

=RIGHT(A2, LEN(A2) – SEARCH(“@”, A2))

  • LEN(A2): セルA2の文字列の全長を取得します。
  • SEARCH(“@”, A2): セルA2内の「@」の位置を特定します。
  • LEN(A2) – SEARCH(“@”, A2): 全長から「@」の位置を引くことで、「@」より右側の文字数を計算します。
  • RIGHT(A2, …): セルA2の右端から、計算された文字数分の文字列を抽出します。

SEARCH関数の応用

SEARCH関数は、より複雑なデータ処理にも応用できます。

複数の検索文字列に対応する

複数のキーワードのいずれかを含むセルを検索したい場合、SEARCH関数をOR条件と組み合わせて使用できます。

例えば、セルA1に「りんご、みかん、ぶどう」という文字列があり、「みかん」または「ぶどう」のどちらかが含まれているかを確認したい場合を考えます。

=OR(ISNUMBER(SEARCH(“みかん”, A1)), ISNUMBER(SEARCH(“ぶどう”, A1)))

この数式は、A1に「みかん」が含まれているか、または「ぶどう」が含まれているかのいずれかがTRUEであればTRUEを返します。

エラーハンドリングとIferror関数

SEARCH関数は、検索文字列が見つからない場合に#VALUE!エラーを返します。このエラーを回避し、ユーザーフレンドリーな表示にするためにIFERROR関数と組み合わせることがよくあります。

例えば、特定のコードが含まれていない場合に「該当なし」と表示したい場合です。

=IFERROR(SEARCH(“コードX”, A1), “該当なし”)

この数式は、「コードX」が見つかればその開始位置を、見つからなければ「該当なし」と表示します。

SEARCH関数のよくあるエラーと対策

SEARCH関数を使用する際によく遭遇するエラーとその対策をまとめました。

1. #VALUE! エラー

原因:

  • 検索文字列が見つからない: SEARCH関数が指定された検索文字列を「対象」の文字列内で見つけられなかった場合に発生します。
  • 検索文字列が空: 検索文字列に空の文字列(””)を指定した場合、常に1を返し、エラーにはなりません。

対策:

  • 検索文字列の確認: 検索したい文字列が正しく入力されているか、スペルミスがないかを確認してください。
  • 対象文字列の確認: 検索対象のセルが正しく指定されているか、また対象のセルに意図した文字列が入力されているかを確認してください。
  • IFERROR関数の利用: 検索文字列が見つからない可能性がある場合は、IFERROR関数と組み合わせてエラー表示を回避し、代わりに分かりやすいメッセージ(例: “見つかりません”)を表示させることを検討してください。

=IFERROR(SEARCH(“検索ワード”, A1), “見つかりません”)

2. ワイルドカードの使用に関する誤解

原因:

SEARCH関数では * (アスタリスク) や ? (クエスチョン) をワイルドカードとして扱います。したがって、ワイルドカード検索を行う場合はそのまま * や ? を使えばよく、特定の1文字や任意の文字列を柔軟に検索できます。

対策:

ワイルドカードを“文字そのもの”として検索したい場合は、チルダ ~ を検索文字列の前に付けます。

  • =SEARCH(“~*”, A1) …「*」という文字の位置を返す
  • =SEARCH(“~?”, A1) …「?」という文字の位置を返す

なお、FIND 関数はワイルドカードをサポートしておらず、大文字・小文字を区別する厳密な検索のみ行えます。COUNTIF 関数や MATCH 関数などはワイルドカードを利用できますが、通常のワイルドカード検索であれば SEARCH 関数だけで十分です。

3. 大文字・小文字の区別をしたい場合

原因:

SEARCH関数は、大文字と小文字を区別しません。例えば、「Apple」と「apple」は同じものとして扱われます。

対策:

大文字・小文字を区別して検索したい場合: 大文字と小文字を厳密に区別して検索したい場合は、SEARCH関数ではなくFIND関数を使用してください。

例: =FIND(“Apple”, A1) は、「Apple」という文字列を正確に大文字・小文字を区別して検索します。

SEARCH関数で文字列内の位置を特定する

SEARCH関数は、指定した文字列がどの位置から現れるかを検索し、その位置を数値で返すExcelの文字列操作関数です。大文字・小文字を区別せず検索でき、メールアドレスからドメイン抽出、特定キーワードを含む商品の分類、文字列の分割など、業務データの整理・分析で幅広く使われます。

LEFT・RIGHT・MID・LEN関数などと組み合わせることで、文字列の分割や可変長の部分抽出にも柔軟に対応できます。SEARCHは部分一致検索が可能なため、IF・ISNUMBER・IFERROR関数と併用すれば、条件付き抽出やエラー処理にも活用できます。

ただし、SEARCH関数はワイルドカードに対応しておらず、空文字検索は1を返す仕様のため、設計時の理解が重要です。SEARCH関数の特性を正しく把握すれば、文字列の構造把握や検索処理を効率的に行うことが可能になります。データベース的な処理や帳票整形の基礎として実務でも応用の幅が広い関数です。


※ 掲載している情報は記事更新時点のものです。

※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。

関連記事