こんにちは。ひとりで.comです。
この辺りから、徐々に関数として複雑になってきますので、しっかり理解していけるように細かく説明できればと思っております。また、なかなか単体での利用用途が少ない関数も出てきますが、応用して使うことによって、より効率的に使えるようになります。
今回紹介する関数はSEARCH関数というものになります。これは、任意の文字列を検索できる関数となります。どういった使い方ができるのか、という点も含めて今回は紹介していきたいと思います。
セルの中から(にかぎらず)任意の文字列を検索できるSEARCH関数
SEARCH関数と聞いて、何かを検索できる関数なのかな…と思った方…大正解です。SEARCH関数を使うと、検索したい文字列を調べることができます。例えばあるセルの中にたくさんの文字列が入っていた際、その中に、自分が調べたい用語や語句が入っているのかどうかを調べることができます。
ただし、SEARCH関数で調べることができるのは、それが何文字目に出てくるか(SEARCHB関数は何バイト目か)というところです。TRUE / FALSEで返すのではなく、数値が返ってきます。すなわち、何文字目にあるか…が数値として返ってくるわけです。
SEARCH関数で何文字目にあるかを判別する
Microsoftの説明欄には以下のように記載されております。
SEARCH 関数および SEARCHB 関数は、指定された文字列を他の文字列の中で検索し、その文字列が最初に現れる位置を左端から数え、その番号を返します。たとえば、”printer” という語で文字 “n” の位置を検索するには、次の関数を使用できます。
=SEARCH(“n”,”printer”)
“n” は “printer” という語で 4 番目の文字であるため、この関数は “4” を返します。
他の単語に含まれる単語を検索することもできます。たとえば、次の関数は
=SEARCH(“base”,”database”)
“5” を返します。これは、”base”という語は “database” という語の 5 番目の文字で始まるためです。
上記の説明では
=SEARCH([文字列],[文字列])
となっていますが、
=SEARCH([文字列],[セル])
=SEARCH([セル],[セル])
=SEARCH([セル],[文字列])
でももちろん可能です。
SEARCH関数の実例(セルの中から任意の文字列を検索してみる)
さて、以下のような表があったとします。
この表のB列から「支店人数」をC列に抜き出したいと思います。通常、抜き出したいと思った場合、LEFT関数やRIGHT関数、MID関数が使えるかな?とまずはじめに思いつくと思います。しかし、それぞれでは、とある問題が生じてしまい、うまく使うことができなさそうです。
・LEFT関数では、そもそもセルの左からしか文字列を取ってこれないので、支店人数を抜き出すのが難しい。
・RIGHT関数で、末尾から文字列を持ってくれば良い…と思いがちですが、実は支店人数が1桁の場合と2桁の場合があるため、一意に取ってくることが難しい。
・MID関数だと、支店名の文字の長さが異なる、また支店長の文字列の長さが異なるため、一意に取ってくることが難しい。
となります。
そこで、SEARCH関数をうまく使って、支店人数を取ってこれるように工夫してみましょう。
支店人数を取ってくるためには以下の様な手順で考える必要があります。
- SEARCH関数を使って、「支店人数」という文字列がセルの中の何番目に登場するのかを明確にする。
- 何番目に登場するか、が明確になったら、「支店人数」の「支」の文字がそれに該当するため、「支店人数:」まで文字列を後ろにずらすために、1で判明した数字に「5」を足してあげる
- MID関数を使って、2で判明した「何文字目」かを使って、支店人数を抜き出す。
それでは実際に見ていきましょう。
まずは、SEARCH関数を使って、支店人数という文字列がセルの何番目に登場するのかを明確にしてみましょう。
これによって、「支店人数」という文字列がセルの中で何番目に出てくるのかがわかりました。同じように、他のセルについても同様の数式を入れてみましょう。
やはり、事前に懸念した通り、セルによって、「支店人数」という文字列が出てくる順序が異なりましたね。それでは更にこの数値に5を足してみましょう。
そして、この数値を元にMID関数を用いて、実際の支店人数を抜き出してみましょう。
いっきに関数が複雑になりました。しっかりひとつひとつみていけばそこまで複雑ではありません。
=MID(B3,SEARCH(“支店人数”,B3)+5,3)
まずSEARCH関数の部分は先ほど説明した通りです。そこに5を足していますね。
そしてMID関数の部分です。MID関数では、「どこのセルから、開始位置がどこで、何文字抜き出すか」を引数として示す必要がありました。ここでは、「開始位置」の部分がSEARCH関数で置き換わっている、と考えてください。
ですので、MID関数では、「B3のセルの中から、開始位置(SEARCH関数で求められた位置から5を足した位置)として、3文字抜き出してください」ということを指し示しています。
※MID関数の最後で指定している3文字ですが、もしセルの中に3文字なかった場合、開始以降の全ての文字数を引っ張ってきます。ですので、ここで指定する数値は3以上であれば極論100でも同じ結果を得ることができます。
このように支店人数を抜き出すことができましたね! SEARCH関数とMID関数は組み合わせて使うことが多い関数ですので、この使い方を覚えておくと良いでしょう。