Excel 指定の文字が何文字目にあるかを調べる (SEARCH関数)

2020年12月11日

SEARCH関数は指定の文字列が何文字目に存在するかを調べるための関数です。

FIND関数と似ていますが、FIND関数の方が便利なため

基本的にはFIND関数を推奨します。(理由は後述)

仕様

=SEARCH(検索文字列,対象,開始位置)
引数省略時の値説明
検索文字列省略不可検索する文字列を指定。
対象省略不可検索対象となる文字列を指定
開始位置1検索を開始する位置を数値で指定。
(最も左を1とした連番)
引数の詳細

使用例

基本的な例

検索文字列が存在しない場合は#VALUEエラーになります。

基本的な使用例のキャプチャ

文字の存在判定を行う例

IF関数ISERROR関数を併用することで自動判定を行う数式を作ることが可能です。

=IF(ISERROR(SEARCH(検索文字列,対象)),"存在しない","存在する")
文字の存在判定を行う使用例のキャプチャ

ISERROR関数の引数にSEARCH関数を指定した場合、このような真偽値が結果になります。

SEARCH関数で結果が見つかるエラーではない…偽(FALSE)
SEARCH関数で結果が見つからないエラーである…真(TRUE)

真偽値はそのままIF関数の引数と出来るため

一つ目の引数である判定の部分に記述します。

そして二つ目の引数に見つからない場合の結果、

三つ目の引数に見つかる場合の結果を

記述すれば自動判定の数式が完成します。

SEARCH関数とFIND関数の違い

FIND関数と同じ引数で同じ機能の関数ですが判定方法に微妙な違いがあります。

FIND関数SEARCH関数
大文字・小文字区別する区別しない
ワイルドカードによる部分一致検索不可能可能
FIND関数とSEARCH関数の違いの図解

普段の使用であれば大文字・小文字を区別するほうが都合がよいため、

FIND関数の使用を推奨します。

SEARCH関数は大文字・小文字を区別せずに検索したい場合と

ワイルドカードによる部分一致検索を行いたい場合に限って使用しましょう。

スピルを利用する方法とメリット

Office365やExcel2019以降ではスピルという形式で記述可能です。

これは複数セルに数式をコピーする場合に便利な機能です。

スピルの利用には何れかの引数を複数セルの範囲で指定します。

スピルでSEARCH関数を記述する例(D3セル)
スピルでSEARCH関数を記述する例(D3セル)

数式を入力するのは最初の一つのセルですが、

引数で指定した高さ分、数式がセルのコピーなしで自動拡大されます。

D3に指定したSEARCH関数がD6まで自動拡大
D3に指定したSEARCH関数がD6まで自動拡大

スピルを利用することで今回の例では、

C3セルに入力するだけでよいため(C4以降にコピーペーストが不要)

以下のメリットがあります。

  • 入力の手間が少ない(数式のセルが多いほど効果が大きい)
  • 数式を編集した時、コピー忘れのリスクがない(最初のセルを更新すると全セルに反映)
  • 絶対参照が不要
  • 途中に行を追加した場合、数式のコピー&ペーストが不要。行削除でも壊れにくい。

関連記事

関数の仕様と使い方の記事一覧