Excelでは文字列検索をしてそのセル位置を求めたいこともあるかもしれません。文字列がどこから始まるのかを探すことができると、エクセルでのデータの検索や抽出・位置の特定などで役立ちそうですよね。Excelの文字列の検索には複数の方法が考えられ、状況に応じて使いやすさが変わるのが特徴です。今回は、エクセルで文字列の検索をどこかの範囲でするときに関数を使う方法を3つご紹介します。
◎ExcelのSEARCH関数でワイルドカードを使って
エクセルでデータを検索して抽出する機能を持つのが関数SEARCHです。Excelで検索ができる関数で部分一致にも対応しています。SEARCH関数の基本的な使い方は『=SEARCH(検索文字,対象文字列,[開始位置]』です。「検索文字」の中に「対象文字列」があるかを調べ、その位置つまり何文字目から始まるかを返します。SEARCH関数はワイルドカードを使うことも可能です。Excelのsearchでワイルドカードを使用するには、検索文字をアスタリスクで囲んで『=SEARCH(“検索文字“,対象文字列,[開始位置]』としましょう。検索文字が参照セルの場合は「”“&参照セル&”*”」のように&を使ってつなぎます。
●エクセルのSEARCH関数は複数の調べる文字列があるときにどうなる?
SEARCH関数で複数の調べる文字列が出てきたらどうなるかが気になるかもしれません。同じ文字が何度出てきたとしても、返す値はその検索文字が最初に出てくる位置です。エクセルで文字列を検索したときに範囲になければエラーになります。もし、特定の文字以降で調べたい時には[開始位置]を指定しましょう。
●ExcelのSEARCHで右から検索する方法
ExcelのSEARCHで右から検索したいと思ったこともあるかもしれません。開始位置を指定する方法は、そもそも文字の長さや登場回数が異なるときには手間がかかりそうですよね。一番最後に登場するところを基準にしたいのであれば同じ文字の数を数える方法と組み合わせることが考えられます。数式は、『=SEARCH(“★★★”, SUBSTITUTE(調べるセル, “検索文字”, “★★★”, LEN(調べるセル) – LEN(SUBSTITUTE(調べるセル, “検索文字”, “”))))』です。「=LEN(調べるセル)-LEN(SUBSTITUTE(調べるセル, “検索文字”, 空白))」のところはエクセルで同じ文字の数を数えています。次にSUBSTITUTE関数で検索文字を”★★★”に置き換えていますが、ここで先ほど求めた同じ文字の数つまり一番最後と指定しているのです。”★★★”は1度しか出現しませんから、SEARCH関数を使うことで最も右の値が何番目にあるかを調べられます。
◎Excel/エクセルでのFIND関数の使い方、SEARCH関数との違いも比較
FIND関数とSEARCH関数の違いが気になるかもしれません。英語ではSEARCHが「探し回る」「調査」など意図的にしっかりと見て回るというイメージで、FIND「わかる」「発見する」など偶然それを見つけるようなイメージです。ExcelでのFIND関数の使い方は、どののように異なるのでしょうか。
エクセルでのFIND関数とSEARCH関数の違いは大きく2つあります。1つ目は、大文字と小文字を区別するかです。検索の際にsearch関数は区別しないため[A]を調べたときに[A]と[a]が該当するのに対し、find関数は区別します。2つ目は、部分一致の検索であるワイルドカードを使えるかです。Excelでのsearch関数は部分一致の検索に使え、find関数は使えないため完全一致で特に大文字や小文字を厳密に指定したいときが主な使い方だと押さえておきましょう。
●FIND関数の読み方と複数条件での使い方
FIND関数の読み方は「ファインドかんすう」です。対象の文字列で探す文字が最初に出てくる位置が何文字目なのかを調べます。FIND関数の基本的な数式は『=FIND(検索文字列,対象,[開始位置])』です。検索文字列は特定の文字列の中で探すものであり、対象は調べるものを直接入力かセル参照で指定します。指定がなければ最初に出てくる位置を返しますが、特定の文字以降で調べたい時には[開始位置]を指定しましょう。
FIND関数では複数条件を指定することもできます。エクセルで複数キーワードを指定し順に検索して該当するものを返すイメージです。ただし、「または」でよく使う関数ORは今回は登場しません。どのように表すのかを次の項目で見ていきます。
●IFERROR(FIND)の組み合わせ
FIND関数は他の関数と組み合わせて使われることが多いのも特徴です。IFERROR関数とであれば、FIND関数の複数条件での検索ができるようになります。基本的な数式は、『=IFERROR(FIND(検索文字列-1,対象),IFERROR(FIND(検索文字列-2,対象),”エラーの場合に表示する値”))』です。IFERRORは直後の引数がエラーだった時に2番目の引数で指定した代わりの値を返します。ここでは、エクセルで1つ目の文字列が検索した範囲にあればその値、なければ2つ目の文字列を調べ、それでもなければ代わりの値を表示するという意味です。Excelで文字列の検索を複数(3つ以上)行う際も、同様に後ろに並べていきます。エクセルで複数キーワードの検索を関数FINDとイフエラーで行うときには、対等というよりは順番に探していくイメージだと違和感がないかもしれません。
●LEFTとFIND関数の組み合わせ
LEFTとFIND関数の組み合わせでは、取得する文字数をより適切に決められます。数式の一例は、『=LEFT(参照セル,FIND(“特定の文字”,参照セル))です。LEFTは文字列または参照セルの左から何文字かを表示しますが、ここでは何文字表示するかをFIND関数で指定します。参照セル内に特定の区切り文字があれば、それを記載することでそこまでの文字を抜き出せるでしょう。
◎VLOOKUPのおすすめの使い方:文字列を条件に利用して検索する
VLOOKUPは様々な使い方が考えられますが文字列を条件にして検索すると用途が広がります。VLOOKUPの基本的な式は『=VLOOKUP(検索値,範囲,列番号,検索方法)』ですが、この検索値に文字列を利用するのです。直接文字列を指定するのであれば、文字列の前後を””で囲むようにしましょう。文字が入っているセル番地を参照することもでき、今度は””は付けずにそのまま記載します。
VLOOKUPの使い方としては文字列のあいまい検索ができることも押さえておくと良いかもしれません。直接文字列を指定するのであれば検索値を「☆彡”」などと囲みます。セル番地を参照するときは少し注意が必要で、「””&F4&”*”」のように文字列の*~アスタリスクと文字列ではないセル番地を&でつなぐのがポイントです。
◎まとめ
今回は、Excelでは文字列検索をしたときにセル位置を求める方法をご紹介しました。Excelで検索できる関数のうち部分一致も対応しているのがsearch関数で、find関数は大文字小文字の区別があります。複数の条件で探す場合などには他の関数も出てきて複雑ですが、あわせて押さえておくとより幅が拡がるでしょう。最後までお読みいただきありがとうございました。
コメント