トップ > ワークシート関数 > SEARCH

SEARCH分類:文字列操作計   2009.02.06

SEARCH関数は「文字列操作」に分類される関数で、ある文字列の中から指定文字列を検索し、その位置を返します。LEFT、MID、RIGHTといった「文字列操作」関数と相性が良く、組み合わせて使用することが多いです。

「名字や名前を抽出する」「特定の文字が含まれているか調べる」といった用途が考えられます。又、ワイルドカードを使用しての検索が行えるのも魅力です。

SEARCHの機能と構成

機能:指定文字列が、対象データ内で最初に現れる位置を検索する。

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

引数

検索文字列には検索する文字列を指定します(ワイルドカード文字も使用可能です)。
検索文字列大文字と小文字が区別されず、又、全角・半角の区別無く1文字を「1」として処理します。
「""」空文列を指定した場合、対象の先頭文字と一致したものと見なされます。
「"立山"」のように2文字以上を指定することもできます。

対象には検索文字列を含むデータを指定します。

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

引数指定の例

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

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


SEARCH関数の応用(1)

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

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



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

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

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


SEARCH関数の応用(2)

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


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

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


【数式1の説明】

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

【数式2の説明】

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


SEARCH関数の応用(3)

ワイルドカードの使用

ワイルドカードを使用することにより、検索に幅を持たせることが出来ます。ここでは、SEARCH関数でワイルドカードを使用する例を挙げていきます。

●「?」・・・任意の1文字と一致する文字列を検索
 データ内で「じ」の前、又は後に任意の1文字がある場合、その位置を表示。


●「*」・・・任意の1文字又は複数文字と一致する文字列を検索
 データ内で「じ」の前、又は後に任意の1文字~複数文字と一致する場合、その位置を表示。


SEARCH関数の類似関数

SEARCHB関数

SEARCH関数と似た関数にSEARCHB関数があります。SEARCHB関数も指定した文字列のの位置を返しますが、SEARCH関数が全角・半角の区別なく1文字を「1」と処理するのに対し、SEARCHB関数はバイト数(半角単位)で処理されます。
尚、下図でわかるように半角は1バイト、全角は2バイトになります。SEARCH / SEARCHB関数は用途によって使い分けましょう。

FIND関数

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

 ・大文字・小文字を区別する。
 ・ワイルドカードの使用ができない。

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


ページトップへ戻る
Copyright(C) 2009- 坂江 保 All Rights Reserved.