【エクセル】SEARCH関数で文字の位置を検索する方法。FIND関数との違いも紹介

ExcelのSEARCH関数で文字の位置を検索する方法

Excel(エクセル)のSEARCH関数は、指定した文字が何文字目にあるかを確認する時に使用します。

今回はSEARCH関数の使い方と、実務に役立つ事例を詳しく紹介します。

SEARCH関数とは?

SEARCH関数の読み方は、「サーチ関数」です。

英語「SEARCH」が「探す」という意味なので、SEARCH関数は指定した文字が左端から何番目にあるかを調べる関数です。

例えば、「東京新宿区西新宿」という住所から「」という文字が先頭から何文字目にあるか、といったことを調べることができます。

「‐」(ハイフン)や「,」(カンマ)、「_」(アンダーバー)、「 」(空白)などの記号の位置を調べるときにもよく利用されます。

また、SEARCH関数とMID関数を組みあわせて使うことで、「東京新宿区西新宿」を「東京都」と「新宿区西新宿」に分割する、といったこともできます。

SEARCH関数とFIND関数との違いは2点

早速ですが、SEARCH関数と似た関数に、FIND関数というものがあります。

FIND関数は、SEARCH関数と同じく、探したい文字が何文字目にあるかを検索する関数で、書式も引数も全く同じです。

=SEARCH(検索文字列,対象,[開始位置])

=FIND(検索文字列,対象,[開始位置])

ただ、この2つの関数には機能的に2点だけ異なるところがあるので、それぞれの違いを紹介します。

2つの関数の違い

異なる点①:SEARCH関数はワイルドカード文字(*、?)が使えるが、FIND関数は使えない

異なる点①:SEARCHは大文字と小文字を区別できないが、FIND関数は可能

その1.ワイルドカード文字の利用

SEARCH関数とFIND関数の違い1:ワイルドカードの使用
SEARCH関数とFIND関数の違い1:ワイルドカードの使用

FIND関数よりSEARCH関数が優れている点は、「?」や「*」のワイルドカード文字を文字の位置の検索に使用できることです。

例えば、上の図のように、「-〇A」(※〇は任意の文字)の文字の位置を検索しようとしたとき、SEARCH関数は「-BA」を検索の対象としますが、FIND関数はできません。

このように、部分一致する文字の位置を検索するときは、SEARCH関数を使用しましょう。

⇒SEARCH関数をワイルドカードで使った事例はこちらへジャンプ

ワイルドカード文字の使い方は以下の記事で詳しく紹介していますので、合わせて参考にしてください。

その2.大文字と小文字の区別

SEARCH関数とFIND関数の違い2:大文字と小文字の区別
SEARCH関数とFIND関数の違い2:大文字と小文字の区別

FIND関数よりSEARCH関数の2つ目の違いは、大文字と小文字を区別できるかどうかです。

SEARCH関数は大文字小文字の区別ができないのに対して、FIND関数は区別できます。

例えば、上の図のように、「12A-34a」から「a」の位置を調べるとき、SEARCH関数は大文字「A」の位置が返されてしまいますが、FIND関数は「a」の位置を正しく取得します。

このように、大文字と小文字を区別して文字の位置を検索したい時は、FIND関数を使うようにしましょう。

SEARCH関数ではなく、FIND関数を使いたい方は、以下のリンク記事へジャンプしてください。

SEARCH関数の書式と引数

SEARCH関数の書式は以下のとおりで、3つの引数を指定する必要があります。

SEARCH(検索文字列,対象,[開始位置])

引数のそれぞれの内容と入力例は、以下の参考にしてください。

第1引数「検索文字列」:位置を調べたい文字を指定します。直接文字を指定する場合は、ダブルクォーテーションで囲みます。(例:A3、”県”、”-”)

第2引数「対象」:どのセルから位置を調べたいか対象の文字列を指定します。(例:B3、”神奈川県横浜市”)

第3引数「開始位置」: 検索を開始する位置を指定します。 先頭の文字から検索する時は「1」を指定します。 省略した場合は、1 を指定したことになります。(例:1,2,3)

以降の見出しからは、このSEARCH関数の書式を使って、文字の位置を調べる方法を紹介していきます。

SEARCH関数の基本的な使い方

それでは、SEARCH関数の基本的な使い方を紹介します。

SEARCH関数/使い方1:文字の位置を検索

SEARCH関数を使って、下の名前リストから空白スペースの位置が先頭から何文字目になるかを調べてみましょう。

SEARCH関数を利用する元表
SEARCH関数を利用する元表

手順1.SEARCH関数を第1引数「検索文字列」を指定

SEARCH関数を挿入します。全角の空白スペースを位置を調べたいので、第1引数「検索文字列」は「” ”」と入力します。半角スペースと全角スペースを間違わないようにしてください。

=SEARCH(" ",

SEARCH関数/手順1.検索する文字を指定
SEARCH関数/手順1.検索する文字を指定

手順2.SEARCH関数を第2引数「対象」を指定

次に、SEARCH関数を第2引数「対象」を指定します。B3セルの氏名から空白スペースの位置を調べたいので、B3セルをクリックします。

=SEARCH(" ",B3,

SEARCH関数/手順2.検索対象のセルを選択
SEARCH関数/手順2.検索対象のセルを選択

手順3.SEARCH関数を第3引数「開始位置」を指定

最後に、SEARCH関数を第3引数「開始位置」を指定します。文字の先頭から何番目の文字かを調べたいので、「1」と入力します。また、「1」であれば、省略してもOKです。

=SEARCH(" ",B3,1)

SEARCH関数/手順3.開始位置を指定
SEARCH関数/手順3.開始位置を指定

手順4.SEARCH関数を確定

Enterキーを押してSEARCH関数を確定させます。そうすると、「山田 太郎」の3文字目にスペースがあることが分かりました。下のセルにもSEARCH関数をコピペすれば、作業は完了です。

SEARCH関数/手順4.文字の位置を取得
SEARCH関数/手順4.文字の位置を取得

SEARCH関数/使い方2:2文字以上の文字の位置を検索

SEARCH関数の第1引数「検索文字列」は、2文字以上の複数でも利用できます。

例えば、「ABC-DEF」の「DE」の文字位置を調べて、先頭から「5」文字目という結果を返すことができます。

=SEARCH("DE",B3,1)

SEARCH関数で複数の文字の位置を調べる
SEARCH関数で複数の文字の位置を調べる

SEARCH関数/注意点:同じ文字が複数ある場合

SEARCH関数を使う際、検索文字列が2つ以上含まれている場合は注意が必要です。

例えば、「BCA-DEFA」から「A」の位置を調べると、一番左側のAの位置である「3」が返されます。

SEARCH関数の注意点:検索文字が複数ある場合
SEARCH関数の注意点:検索文字が複数ある場合

最後に現れる検索文字の位置を調べたいときは、以下の関数を貼り付けして、数式内の「B3」と「A」の文字を変更して使用してください。

=SEARCH("★",SUBSTITUTE(B3,"A","★",LEN(B3)-LEN(SUBSTITUTE(B3,"A",""))))

★”:どんな文字でもOKです。
B3:調べたいセル番号に変更してください。
A”:どの文字の位置を調べたいかに合わせて変更してください。

SEARCH関数で最後の検索文字の位置を調べる
SEARCH関数で最後の検索文字の位置を調べる

【応用編】SEARCH関数を使った事例

この見出しでは、SEARCH関数を使った事例を2つ紹介します。

SEARCH関数/事例1.ワイルドカードを使って検索する

SEARCH関数はワイルドカード文字を使って、部分一致する文字の位置を検索することができます。

ワイルドカード文字を知らない方のために、ワイルドカードとは何なのかを紹介します。

ワイルドカードは、「〇〇を含む文字列」のような条件で検索したいときに使用する文字のことで、主に以下の2つの文字があります。

ワイルドカード文字    説明
*(アスタリスク)0文字以上の任意の文字列
(疑問符)任意の1文字

「*(アスタリスク)」は、0文字以上の任意の文字列を表し、「?(疑問符)」は、任意の1文字を表します。

以下のように、ワイルドカード文字の前後に別の文字を付け加えることで、部分一致する文字の検索を行えます。

使用例   意味  検索でヒットする文字列
*県「県」で終わる文字列県、近県、兵庫県、神奈川県
県*「県」で始まる文字列県、県境、県立、県議会
*県*「県」を含む文字列県、近県、兵庫県、神奈川県 県境、県
??県2文字+「県」の文字列兵庫県
県?「県」+1文字の文字列県境、県立

例えば、下のSEARCH関数の第1引数に「”-*A”」と入力することで、「-BA」や「-CA」「-AA」などの文字の位置を調べることができます。

=SEARCH("-*A",C3,1)

SEARCH関数でワイルドカードのasteriskを使用する方法
SEARCH関数でワイルドカードのasteriskを使用する方法

SEARCH関数/事例2.MID関数で特定の文字を抽出する

文字列から指定した文字を抽出するMID関数と、SEARCH関数を組み合わせることで、特定のキーとなる文字の前後の文字を抽出することができます。

今回は、下の表のように『鈴木 一郎(経理部)』といったデータを括弧「()」の文字をキーにして、「鈴木 一郎」と「経理部」に分ける、といった方法を紹介します。

手順1.2つの括弧が何文字目かを調べる

SEARCH関数を使って、文字を抽出するキーとなる『(』と『)』が左側から何文字目かを調べます。

=SEARCH("(",B3,1)

=SEARCH(")",B3,1)

SEARCH関数を使ってキーとなる文字の位置を調べる

手順2.『(』より手前の文字を取り出す

右隣りの列に以下のMID関数を挿入し、SEARCH関数で調べた『(』の位置の1文字前までの文字を抽出します。

=MID(B3,1,(C3-1))

SEARCH関数の結果を使って前半の文字を抽出
SEARCH関数の結果を使って前半の文字を抽出

手順3.『(』と『)』に挟まれた文字を取り出す

さらに右隣りの列に以下のMID関数を挿入し、SEARCH関数で調べた『(』と『)』の開始位置の数値を使って、その間の文字を抽出します。

=MID(B3,C3+1,(D3-C3-1))

SEARCH関数の結果を使って、キー文字に挟まれた文字を抽出
SEARCH関数の結果を使って、キー文字に挟まれた文字を抽出

手順4.名前と部門の分解が完了

以上の作業により、B列の「名前&部門」の文字は、E列「名前」とF列「部門」に分解することができます。

SEARCH関数とMID関数で特定の文字を抽出
SEARCH関数とMID関数で特定の文字を抽出

-Excel(エクセル), 数式・関数