SEARCH関数:指定の文字が何文字目にあるかを検索する

SEARCH 関数は Excel で用意されている関数の一つで、指定した文字が対象の文字列の中で最初に現れる位置を検索し、文字数として返します。 SEARCH 関数では大文字と小文字は区別されません。半角文字であっても全角文字であっても 1 文字は 1 文字として数えます。また SEARCH 関数ではワイルドカードが使用できます。ここでは Excel における SEARCH 関数の使い方について解説します。

※ Excel の対応バージョン : 365 web 2021 2019 2016 2013 2010 2007

(Last modified: )

SEARCH関数の定義

SEARCH 関数は対象の文字列の中で検索する文字列が最初に現れる位置を検索します。

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

1 番目の引数には検索する文字列または文字列が含まれるセルを指定します。文字列を指定する場合はダブルクォーテーションで囲んで指定してください。

2 番目の引数には検索を行う対象の文字列または文字列が含まれるセルを指定します。文字列を指定する場合はダブルクォーテーションで囲んで指定してください。

3 番目の引数には検索を行う開始位置を指定します。先頭の文字から調べる場合は 1 を指定します。 SEARCH 関数の場合、開始位置は文字単位で指定します。

例えば検索する文字が "I" 、対象の文字列が "PICNIC" 、開始位置が 1 だった場合、結果として 2 になります。

=SEARCH("I","PICNIC",1)
--> 2

検索する文字が "I" 、対象の文字列が "PICNIC" 、開始位置が 3 だった場合、結果として 5 になります。

=SEARCH("I","PICNIC",3)
--> 5

SEARCH 関数では大文字と小文字を区別しません。検索する文字が "w" 、対象の文字列が "White Flower" PICNIC" 、開始位置が 1 だった場合、結果として 1 になります。

=SEARCH("w","White Flower",1)
--> 1

なお SEARCH 関数で対象の文字列の中で検索文字列が見つからなかった場合には #VALUE! が返されます。例えば検索する文字が "M" 、対象の文字列が "PICNIC" 、開始位置が 1 だった場合、結果として #VALUE! になります。

=SEARCH("M","PICNIC",1)
--> #VALUE!

SEARCH 関数では検索を開始する位置は文字数で指定し、検索した結果も文字単位で取得します。半角文字であっても全角文字であっても 1 つの文字は 1 文字としてカウントされます。

例えば検索する文字が "県" 、対象の文字列が "愛知県名古屋市" 、開始位置 1 だった場合、結果として 3 になります。

=SEARCH("県","愛知県名古屋市",1)
--> 3

ワイルドカードを使用する

SEARCH 関数では * (アスタリスク)と ? (クエスチョンマーク)の 2 つのワイルドカードを使用することができます。( SEARCH 関数と似ている FIND 関数ではワイルドカードは使用できません)。

ワイルドカードはそれぞれ次のような意味を持ちます。

? は任意の1文字
* は任意の数の文字列

? は任意の 1 文字と一致します。例えば検索する文字列として "A?" と指定した場合は "A" で始まりその後に任意の 1 文字が続く文字列と一致します。例えば "AB" や "A0" などです。

* は任意の数の文字列と一致します。例えば検索する文字列として "A*E" と指定した場合は "A" で始まりその後に任意の文字列が続いたあとに "E" と続く文字列と一致します。例えば "APPLE" や "A74E" などです。

例えば検索する文字が "?県" 、対象の文字列が "愛知県名古屋市" 、開始位置 1 だった場合、結果として 2 になります。

=SEARCH("?県","愛知県名古屋市",1)
--> 2

"?県" は "知県" に位置するので 2 が返されました。

例えば検索する文字が "都*区" 、対象の文字列が "東京都中央区日本橋" 、開始位置 1 だった場合、結果として 3 になります。

=SEARCH("都*区","東京都中央区日本橋",1)
--> 3

"都*区" は "都中央区" に位置するので 3 が返されました。

ワイルドカードの文字を文字として検索する

SEARCH 関数では ?* はワイルドカードとして特別な意味を持っているため、ワイルドカードしてではなく文字として ?* を検索したい場合はチルダ( ~ )を付けて検索する必要があります。

~? 文字として?を検索する
~* 文字として*を検索する

例えば検索する文字が "*" 、対象の文字列が "ABC*DEF" 、開始位置 1 だった場合、結果として 1 になります。 "*" は任意の数の文字列と一致するため対象の文字列の 1 文字目と位置するからです。

=SEARCH("*","ABC*DEF",1)
--> 1

そこで検索する文字を "~*" のようにチルダを付けて検索すると、文字である "*" とだけ一致するため結果として 4 になります。

=SEARCH("~*","ABC*DEF",1)
--> 4

このようにワイルドカードである ?* を文字として検索したい場合にはワイルドカードの前にチルダを付けてください。

SEARCH関数の使い方

それでは実際に SEARCH 関数を使ってみます。 Excel のシートに検索対象の文字列を次のように入力しました。

SEARCH関数の使い方(1)

取得した文字列を表示する E3 セルを選択し、次のように入力しました。 SEARCH 関数の 1 番目の引数に検索する文字列が入力されたセルとして C3 せるを指定し、 2 番目の引数に対象の文字列が含まれる B3 セルを指定し、 3 番目の引数に開始位置が含まれる D3 セルを指定しました。

=SEARCH(C3,B3,D3)

SEARCH関数の使い方(2)

Enter キーを押すと、 E3 セルには次のように表示されます。

SEARCH関数の使い方(3)

同じように E4 セルから E5 セルに対しても SEARCH 関数を入力すると次のように表示されました。

SEARCH関数の使い方(4)

SEARCH 関数の場合は大文字と小文字は区別されません。そのため "o" は "O" にも一致します。

指定した文字列が2番目に現れる位置を検索する

SEARCH 関数は指定した文字が最初に現れる位置を検索する関数ですが、 SEARCH 関数をネストして使用することで 2 番目に現れる位置を検索することもできます。次のシートを見てください。

指定した文字列が2番目に現れる位置を検索する(1)

対象の文字列の中にある "-" の位置を取得します。最初に出てくる位置を取得するには SEARCH 関数を使って次のように C3 セルに入力しました。検索を開始する位置は対象の文字列の先頭を表す 1 を指定しています。

=SEARCH("-",B3,1)

指定した文字列が2番目に現れる位置を検索する(2)

Enter キーを押すと次のように表示されます。また C4 セルから C7 セルにも同じように数式をコピーして入力しました。

指定した文字列が2番目に現れる位置を検索する(3)

指定した文字列が2番目に現れる位置を検索する(4)

次に文字列の中にある "-" が 2 番目に出てくる位置を検索します。この場合は、検索を開始する位置として "-" を最初に見つけた位置の次の文字を指定します。 D3 セルに次のように数式を入力しました。

=SEARCH("-",B3,SEARCH("-",B3,1)+1)

指定した文字列が2番目に現れる位置を検索する(5)

Enter キーを押すと次のように表示されます。また D4 セルから D7 セルにも同じように数式をコピーして入力しました。

指定した文字列が2番目に現れる位置を検索する(6)

指定した文字列が2番目に現れる位置を検索する(7)

SEARCH 関数を使って指定した文字列が 2 番目に出てくる位置を検索することができました。対象の文字列の中に検索する文字列が 2 つ含まれていない場合は #VALUE! エラーとなります。

SEARCH関数の便利な利用方法

SEARCH 関数の便利な利用方法を下記の記事で紹介しています。

-- --

Excel における SEARCH 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。