更新日:、 作成日:

エクセル SEARCH 関数:文字列の位置を検索する

はじめに

エクセルの SEARCH 関数の使い方を紹介します。

SEARCH 関数は検索ワードが見つかった位置を取得します。

=SEARCH("A","ABC") のようにして、AABC から検索して 1 を取得できます。

=SEARCH("Excel???",検索対象) のようにして、Excel の後ろに 3 文字以上あるときは 1 以上 を取得できます。

検索ワードが見つからないときはエラー #VALUE! になります。

大文字小文字を区別しないで検索します。ワイルドカードを使用できます。

大文字小文字を区別して検索するには「FIND 関数」を使用します。
文字列を検索する方法は「文字列やセルを検索する」をご覧ください。

SEARCH 関数の引数

SEARCH(検索ワード, 検索対象)
検索対象から検索ワードを大文字と小文字を区別しないで検索して、最初に見つかった位置を取得します。

SEARCH(検索ワード, 検索対象, 開始位置)
検索対象開始位置から検索します。

引数「検索ワード」検索する文字列を指定します。ワイルドカードを使用できます。スピル化
引数「検索対象」検索対象となる文字列を指定します。この文字列の中から引数「検索ワード」が最初に見つかった位置が取得されます。スピル化
引数「開始位置」省略できます。省略すると 1 が指定されます。
検索を開始する位置を指定します。最初の文字から検索するときは 1 を指定します。
スピル化

スピル化:セルの範囲や配列を指定すると結果が「スピル」します。

引数「検索ワード」

使用できるワイルドカードには次のものがあります。

パターン 説明 使用例 一致例
*任意の長さの文字"あ*"あ, あい, あいう
?任意の 1 文字"あ?"あい, あか, あき
~ワイルドカードの文字 * ? を検索する"あ~?~*"あ?*

使い方

SEARCH 関数の使い方を紹介します。

1 文字の検索ワードを検索する

A をセル「B3」の検索対象から検索します。

=SEARCH("A",B3)

大文字小文字を区別しません。

14

複数文字の検索ワードを検索する

複数文字の検索ワードを検索対象から検索します。

=SEARCH(B3,C3)
15

ワイルドカードを使って検索する

*A* を検索対象から検索します。

=SEARCH(B3,C3)

*A* は A があるときは 1 を返します。

A* は AB や AC など A から続く文字と一致するので "A" で検索したときと同じ結果になります。

*A は A より前のすべての文字と一致するので A があるときは 1 を返します。

16

特定の文字で始まるか検索するには、下記の「高度な使い方」をご覧ください。

開始位置を指定して検索する

AA2A45 から開始位置を指定して検索します。

=SEARCH(B3,C3,D3)

検索ワードが空文字のときは開始位置を返します。

17

何番目を検索する

2 番目の AA2A4A から検索します。引数「開始位置」に最初に検索した 結果 + 1 を入力して、2 番目の検索ワードを検索できます。

=SEARCH(B3,C3)
=SEARCH(B3,C3,SEARCH(B3,C3)+1)
=SEARCH(B3,C3,SEARCH(B3,C3,SEARCH(B3,C3)+1)+1)

何番目を指定するには下記の「高度な使い方」をご覧ください。

18

高度な使い方

SEARCH 関数と他の関数を組み合わせた使い方などを紹介します。

改行を検索する

セル内の改行文字を入力するには「CHAR 関数」を使用します。CHAR(10) がセル内の改行文字です。

=SEARCH(CHAR(10),B2)

他にも「CHAR 関数」を使用して、タブ文字など特殊文字を入力できます。

13

特定の文字で始まるか検索する

名前が E から始まるか検索します。「IFERROR 関数」を使用して、始まらないときに FALSE にできます。

=SEARCH("E",B3)=1
=IFERROR(SEARCH("E",B4)=1,FALSE)

結果が 1 のとき、その文字から始まります。

21

右から検索する

最後の文字から左に向かって検索するには文字列を反転します。反転するには「スピル」を使用します。

MID 関数」と「SEQUENCE 関数」を使用して、文字列を 1 文字ずつ逆から抽出します。それを「TEXTJOIN 関数」を使用して結合します。

=TEXTJOIN("",FALSE,MID(B3,SEQUENCE(LEN(B3),,LEN(B3),-1),1))

反転した文字列を SEARCH 関数で検索して 文字数 - 結果 + 1 が後ろから検索した位置になります。「LEN 関数」を使用して文字数を取得できます。

=LEN(C4)-SEARCH("A",C4)+1
20
スピルは 365 または 2021 から使用できます。

何番目を指定して検索する

ラムダを使用して何番目の検索ワードを検索するには「REDUCE 関数」を使用します。複雑なので詳細は関数のページをご覧ください。

=REDUCE(0,SEQUENCE(B5),
LAMBDA(total,x,
SEARCH($B$3,$C$3,total+1)))
19

SEQUENCE 関数」にループする回数を入力して、その数だけ SEARCH 関数を繰り返し実行します。その 結果 + 1 を次の SEARCH 関数の引数「開始位置」に指定して、何番目の検索ワードを検索します。

SEQUENCE(B5) の部分に何番目の検索ワードを検索するかを入力します。

total+1 の部分で前回の検索結果 + 1 を開始位置にしています。

ラムダは 365 で使用できます。

解説

大文字小文字を区別しないで検索します。ワイルドカードを使用できます。大文字小文字を区別して検索するには「FIND 関数」を使用します。

引数「検索ワード」が引数「検索対象」の先頭の文字にあるときは 1 を返します。

引数「検索ワード」が引数「検索対象」に複数存在するときは、左から検索して最初に見つけた文字の位置を返します。

引数「検索ワード」が空文字 "" や空のセルのときは、引数「開始位置」の値が返されます。引数「開始位置」を省略しているときは 1 です。

引数「検索ワード」が見つからなかったときはエラー #VALUE! になります。

引数「開始位置」が 0 以下や引数「検索対象」の文字数より大きいときはエラー #VALUE! になります。