- 作成日 : 2025年8月25日
SEARCH関数の使い方とは?文字列検索の基本から応用まで
ExcelのSEARCH関数とは、指定した文字列が別の文字列の中で何文字目から始まるかを調べる関数です。大文字・小文字を区別せずに検索できるため、キーワードの含有チェックや、文字列の一部を抽出する処理に適しています。
たとえば、「このセルに特定の語句が含まれているか?」「区切り文字の後ろを取り出したい」といったシーンで活用できます。
本記事では、SEARCH関数の基本構文から実践的な活用例までを網羅し、他の文字列関数(LEFT、MID、IFなど)との組み合わせや、よくあるエラーの対処法についてもわかりやすく解説します。
目次
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関数と組み合わせて、特定の文字を含むデータだけを抽出したり、条件付き書式で強調表示したりする際に非常に役立ちます。
例えば、商品リストの中から「限定」という文字を含む商品だけを抽出したい場合を考えてみましょう。
A | B | |
---|---|---|
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]」からユーザー名とドメイン名を分割したい場合を考えてみましょう。
A | B | C | |
---|---|---|---|
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関数の特性を正しく把握すれば、文字列の構造把握や検索処理を効率的に行うことが可能になります。データベース的な処理や帳票整形の基礎として実務でも応用の幅が広い関数です。
※ 掲載している情報は記事更新時点のものです。
※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。
関連記事
SEQUENCE関数の使い方:エクセルで連続した数値の配列を自動生成する方法
SEQUENCE関数は、指定した行数と列数で連続した数値の配列を自動生成するエクセルの動的配列関数です。連番の作成、日付リストの生成、座席表の番号付け、テストデータの作成など、規則的な数値配列が必要な様々な場面で活用されています。Excel…
詳しくみるエクセルで時間を計算する方法まとめ!目的別にやり方を解説
エクセルは、時間の計算を行う上で非常に便利なツールです。ビジネスシーンや日常生活において、勤務時間の集計やタスクごとの経過時間の把握など、さまざまな場面で役立ちます。本記事では、エクセルを使用して時間を計算する方法を詳しく解説します。合計時…
詳しくみるSUM関数の使い方を初心者向けに解説!注意点やスプレッドシートでの活用まで
SUM関数は、ExcelやGoogleスプレッドシートなどでよく使用される基本的な関数の一つです。数字の合計を簡単に計算できるため、データの集計や分析を行う際に非常に便利です。本記事では、SUM関数の基本的な使い方から、利用シーン、注意点、…
詳しくみるMIN関数とは?最小値の取得から複数条件での応用まで使い方を徹底解説
MIN関数(読み方:ミン関数またはミニマム関数)は、エクセルで複数の数値データの中から最小値を簡単に抽出できる便利な関数です。 この記事では、エクセル初心者の方でも理解しやすいように、MIN関数の基本的な使い方から、ビジネスや日常生活での具…
詳しくみるエクセルで〇の数を数える関数とは?数えられない場合はどうする?
エクセルを使ってデータを分析する際、「〇」といった特定の記号や値を数えたい場合がありますが、そのためには適切な関数を利用することが重要です。この記事では、エクセルで〇の数を数えるための代表的な関数であるCOUNTIF関数やCOUNTIFS関…
詳しくみるSLOPE関数の使い方:エクセルで線形回帰の傾きを計算する方法
SLOPE関数は、2つのデータセット間の線形回帰直線の傾きを計算するエクセルの統計関数です。売上高と広告費の関係分析、気温と電力消費の相関調査、生産量とコストの関係把握、時系列データのトレンド分析など、2つの変数間の関係性を数値化する様々な…
詳しくみる