Find
分類:文字列操作

FIND

 FIND関数は「文字列操作」に分類される関数で、ある文字列の中から指定文字列を検索し、その位置を返します。LEFT、MID、RIGHTといった他の「文字列操作」関数と相性が良く、組み合わせて使用することが多いです。
 「名字や名前を抽出する」「特定の文字が含まれているか調べる」といった用途が考えられます。


FINDの機能と構成

機能:文字列が他の文字列内で最初に現れる位置を検索する。

構成:=FIND(検索文字列,対象,開始位置)

◆引数
 「検索文字列」には検索する文字列を指定します。ワイルドカード文字の使用は出来ません。
 「検索文字列」は大文字と小文字が区別されますが、全角・半角の区別無く1文字を「1」として処理しますので注意して下さい。

 「検索文字列」に「""」空文字列を指定した場合、「対象」の先頭文字と一致したものと見なされます。また、「検索文字列」には、「"剣岳"」のように、2文字以上の指定も可能です。

 「対象」には、検索文字列を含む文字列を指定します。

 「開始位置」には、検索を開始する位置を指定します。「対象」の先頭文字から検索する場合は「1」を指定します。省略した場合は「1」を指定したものとみなされます。

◆引数を指定する例

セル[A1]の文字列からスペース(" ")を検索:=FIND(" ",A1,1)
セル[A1]の文字列からアットマーク("@")を検索:=FIND("@",A1)
[Data]と名前の定義を行ったセルの文字列から、アットマーク("@")を検索:=FIND("@",Data,1)
数式を挿入したセルと同じ行のセルの文字列からスペース(" ")を検索※:=FIND(" ",$A$3:$A$9,1)

※「文字列」に行又は列、どちらか一方の1次元セル範囲を指定出来ます。しかし、FINDの対象となる文字列はセル範囲が行方向なら同じ行、列方向なら同じ列のセル値になります。2次元セル範囲を指定すると#VALUE!のエラーになります。


FIND関数の応用(1)

 FIND関数の代表的な応用はLEFT、MID、RIGHT関数との組み合わせです。ここではそれらの組み合わせを例に挙げたいと思います。

◆LEFT、MID、RIGHT関数との組み合わせ


LEFT関数:FIND関数で「@」の位置を調べ、それより前の文字列をLEFT関数で抽出。
       (@は抽出しないので「1」を引く)

MID関数:FIND関数で「@」の位置を調べ、MID関数でそれより後の5文字を抽出。
       (@は抽出しないので「1」を足す)

RIGHT関数:LEN関数で求めた文字数からFIND関数で求めた「@」の位置を引き、それを基に
        RIGHT関数で残りの文字列を抽出。


FIND関数の応用(2)

 次はFIND関数用いて「名簿の中に特定の文字が含まれているか」を調べます。FIND関数の他にIS関数、IF関数、を使用しています。下図の例では、名簿の中に「コ」が含まれていたら、隣の列(D列)に「該当!」と表示しています。

 次は上図の応用です。名簿に「ラ」が含まれていたら、該当ナンバーを表示、それを基に該当人物を抽出し順に並べます。作業セルを使用し少々複雑ですが、様々な場面で応用できると思います。

 数式1にはFIND関数、IS関数、IF関数、数式2にはにはCOUNT関数、INDEX関数、SMALLを使用しています。

【数式1の説明】

 1.FIND関数でセル[D2]の「ラ」をC列の文字列から検索。「ラ」が見つからなかったらエラー
 2.ISERROR関数を用いエラーだった場合は非表示
 3.エラーでなかった場合は、B列の該当ナンバーを返す

【数式2の説明】

 1.COUNT関数でD列の数値の個数を返し、B列の同じ行の数値と比較する(COUNT関数の
   エラーを防ぐため)。結果がFALSE(エラー)の場合は非表示
 2.SMALL関数でD列の数値を小さい順に並べる
 3.「2.」の結果を基にINDEX関数で、該当ナンバーの人物名をC列より抽出


FIND関数の類似関数

◆FINDB関数

 FIND関数と似た関数にFINDB関数があります。FINDB関数も指定した文字列のの位置を返します。
 FIND関数が全角・半角の区別なく1文字を「1」と処理するのに対し、FINDB関数はバイト数(半角単位)で処理され、1バイトだと「1」、2バイトだと「2」を返します。

 尚、下図でわかるように半角は1バイト、全角は2バイトになります。FIND / FINDB関数は用途によって使い分けましょう。



◆SEARCH関数

 FIND関数と機能が類似した関数にSEARCH関数があります。SEARCH関数はFIND関数と同様、引数に指定した文字列を検索しその位置を返します。FIND関数と違う主な点を2つ挙げます。

 ・大文字・小文字は区別されない。
 ・ワイルドカードを使用できる。

 検索状況によってこれらを使い分けましょう。

Excel Tips for Teachers

Copyright (C) 2009 坂江 保 All Rights Reserved.