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

2020年5月12日

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

他の文字列関数との併用が多いですが、

単独では指定文字列が存在するか否かの機械的な判定に使うことが多い関数です。

この記事では、その仕様と使い方を紹介します。

仕様

=FIND(検索文字列,対象,開始位置)
引数省略時の値説明
検索文字列省略不可検索ワードとなる文字列を指定。
対象省略不可検索する文字列を指定。
開始位置1取り出す文字数を数値で指定。(文字数を超えた場合、末尾まで)
各引数の詳細

使用例

基本的には下のように利用します。

対象(B3)の中で検索文字列(猫)の文字が4番に登場するため数式の結果(E4)が4になります。

対象(B4)の中に検索文字列(猫)が存在しない場合は#VALUEエラーになります。

基本的な使用例
基本的な使用例

文字の存在判定を行う例

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

文字の存在判定を行う例
文字の存在判定を行う例

数式

=IF(ISERROR(FIND(検索文字列,対象)),"存在しない","存在する")

ISERROR関数の引数にFIND関数を指定した場合、

このような真偽値が結果になります。

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

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

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

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

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

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

FIND関数とSEARCH関数の違い

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

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

大文字・小文字を区別するほうが都合がよいため、

基本的にはFIND関数の使用を推奨します。

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

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

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

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

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

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

例では検索文字列のみ範囲にしていますが、対象を範囲にすることも可能です。

スピルでFIND関数を記述する例(C5セル)
スピルでFIND関数を記述する例(C5セル)

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

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

C5に指定したFIND関数がC10まで自動拡大
C5に指定したFIND関数がC10まで自動拡大

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

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

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

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

関連記事

FIND関数の使い方・活用方法の記事一覧

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

各種エラーの発生条件と判定関数

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