10/11/2018

Excel。検索する文字の位置を算出する、FIND関数とSEARCH関数の違いは何?【SEARCH】

Excel。検索する文字の位置を算出する、FIND関数とSEARCH関数の違いは何?

<FIND関数・SEARCH関数>

セル内の文字で、
検索したい文字が何文字目にあるのかを調べることができる関数が
Excelには、
FIND関数(FINDB関数)

SEARCH関数(SEARCHB関数)
があるのですが、どこがどう違うのでしょうか?

微妙に異なっていますので、確認しておきましょう。

【FIND関数で検索】

C2に、B2の文字列から”横”という文字が何文字目にあるのかを算出しますが、
今回はFIND関数で行ってみます。

検索文字列は、”横”。
対象が、B2。
開始位置は省略できますが、1と入力してOKボタンをクリックします。

5と算出されました。これがFIND関数の基本的な使い方ですね。

C2の数式も確認しておきましょう。

=FIND("横",B2,1)

では、ワイルドカードを使った検索は出来るのかを確認してみましょう。
C3に数式を作ります。

先程と違うのは、
検索文字列が”横*”とワイルドカードをつかっていることですが、
OKボタンをクリックすると、#VALUEとエラーになってしまいます。

FIND関数はワイルドカードを使った検索は出来ないわけです。
では、SEARCH関数ではどうなるのでしょうか?

【SEARCH関数はワイルドカードを使った検索ができる】

D2にSEARCH関数の数式をつくっていきましょう。

引数は、FIND関数と同じですね。D2の数式は、
=SEARCH("横",B2,1)

FIND関数と同じように算出することができました。

では、D3でワイルドカードを使った検索をしてみましょう。

D3の数式は、
=SEARCH("横*",B3,1)

では、結果はどうなった確認すると、

なんと、SEARCH関数は、
ワイルドカードを使った検索をすることができるのです。

まず、ここが違う点ですね。
それ以外の違いも確認しておきましょう。

【FIND関数は、大文字小文字を区別する】

今度は、
セル内の文字列で小文字の”s”が何文字目にあるのかを算出したいとします。

C4の数式を
=FIND("s",B4,1)
として結果はどうなったのでしょうか?

B4の文字列は、YOKOHAMASHIなので、小文字のSはありません。
なので検索されず、#VALUE!エラーが表示されてしまいました。

では、C5に
=FIND("s",B5,1)
と設定して確認してみると、

B5の文字列は、YOKOHAMAsHIと今度は、小文字のsがありますので、
FIND関数で算出することができました。

つまり、FIND関数は、大文字と小文字を区別して検索し算出してくれます。

では、SEARCH関数はどうなのでしょか?

D4に、
=SEARCH("s",B4,1)
D5に、
=SEARCH("s",B5,1)
という数式を作って確認してみましょう。

SEARCH関数は、大文字だろうが、小文字だろうが区別なく、
”s”ならば検索し算出しました。

つまり、SEATCH関数は、大文字・小文字の区別をしてくれません。

FIND関数は、大文字と小文字を区別して、
ワイルドカードを使った検索ができないというのが特徴なので、
使うときには注意して使う必要がありそうですね。