前回FIND関数で任意の文字列が対象データの何文字目にあるかカウントする方法について解説しました。
FIND関数で任意の文字列が対象データの何文字目にあるかカウントする方法 | Excelを制する者は人生を制す ~No Excel No Life~
FIND関数と類似機能を持つ関数が他にもあります。
それはSEARCH関数です。
FIND関数と同じ感覚・用途で使えますので、併せて覚えてしまいましょう。
今回はSEARCH関数で任意の文字列が対象データの何文字目にあるかカウントする方法について解説していきます。
SEARCH関数の基本構成
SEARCH(検索文字列,対象,[開始位置])
検索文字列
検索をしたい文字列を指定します。
数式内に直接文字列を指定したい場合は””[ダブルクォーテーション]で文字列を囲いましょう。
対象
[検索文字列]が含まれているセルを指定します。
セル範囲(たとえば”A1:A2″など)は指定しても正しくカウントできませんので、1つのセル(たとえば”A1″のみなど)を選択しましょう。
開始位置
省略可能です。(省略した場合[対象]の1文字目から検索対象となる)
検索を開始する位置を数字で指定します。
ここで指定する文字数は半角・全角の区別はありません。
使用例
今回はB4セルに入力されている住所のうち、”区”が何文字目にあるのか、C4セルに返したいとします。
その場合、C4セルのSEARCH関数で指定する[検索文字列]は”区”、[対象]はB4セル、[開始位置]は1文字目から検索をかけたいので省略します。
そうすると、C4セルにはB4セルの中で”区”が7文字目にあることを示す”7″の数字が返ります。
[検索文字列]はセル参照も可能!
先述の説明では、[検索文字列]を数式内に直接入力しましたが、セル参照を行なうことも可能です。
上図ではF9セルに”区”と入力しているため、SEARCH関数の結果は先述の例といっしょの結果となります。
なお、[検索文字列]で指定したセル内に複数の二字以上の文字列を入力した場合、一字目が[検索文字列]扱いになります。
ちなみに[対象]内にない文字列になっている場合、「#VALUE!」のエラーになります。
[対象]の[開始位置]を指定することも可能!
[開始位置]を指定することで、[対象]の中の検索範囲をせばめることも可能です。
使いどころとしては、[検索文字列]が[対象]の中に複数あって、[対象]の後半の方で検索したい場合に使用すると良いでしょう。
ちなみに、[開始位置]を指定するしない関わらず、返る値は[対象]の1文字目から起算された結果となります。
[開始位置]から何文字目かを知りたい場合は、[対象]を分割するなどのひと手間が必要になります。
たとえば、先述の住所の中で”-“が何文字目かをカウントしたいとします。
その場合、住所の文字列では9文字目と11文字目に2箇所”-“があるため、最初の9文字目を返してしまいます。
なので、たとえば[開始位置]を”10″とすると、下図の通り10文字目から”-“を検索することになります。
結果としては、11文字目に”-“があるため、SEARCH関数の結果として”11″の数字が返ります。
まとめ
SEARCH関数はFIND関数と同様に使いどころが難しいため、Excel中・上級者向けの関数です。
使い方はSEARCH関数もFIND関数もほぼいっしょのためぜひセットで覚えてくださいね。
逆に気になるのはSEARCH関数もFIND関数に「違い」はあるのか?ということころ。
SEARCH関数もFIND関数の違いについては後日別記事で解説していきます。