業務を行う中でExcel(エクセル)を使用して、集計やデータ分析をすることが多いと思います。「住所から県名を取り出したい」「姓名を分けたデータにしたい」など、あるデータから必要な情報を一気に抽出したいと思うことはありませんか?
そんな時に使えるのが『FIND関数』です。 今回はFIND関数について、例題を交えながら丁寧にご紹介します。
監修:みずき さん
EXCEL女子の研修講師をしています。Excel研修では「覚える」だけではなく「理解する」ことで、自身の力としてExcelスキルを身につけられる研修を実施しています。研修をするたびにExcelが大好きになり、Excelってすごい!と実感しています。Excelの他には写真が好きで食べ物や風景を撮影しています!
FIND関数とは"「FIND」=見つけ出す"という名前が表現している通り、指定された文字列が、左から何番目にあるのかを探すことができる関数です。
例えば、「神奈川県横浜市青葉区」という住所で「県」という文字は何文字目にあるでしょうか?
4番目ですね。
文字数が少なかったり、データが少なかったりする場合は、そのまま数えた方が早いかもしれません。しかし、文字数が多かったり、膨大なデータを扱ったりするのは大変です。
そこで役に立つのがFIND関数です。他の関数と組み合わせて使うことで、特定の文字を抽出することも可能です。
順番に使い方を見ていきましょう。
=FIND(検索文字列,対象,開始位置)
指定した文字が何文字目にあるのかを求めることができます。
これから3つの具体例をもとに、基本的な使い方を確認してみましょう。
こちらは住所一覧です。
A列の住所から「県」という文字が何番目にあるかB列に表示していきます。
この場合、そこまで大きくないデータのため、手入力したくなりますが、1つずつ数えていくのは非効率です。
そこでFIND関数を使用します。実際に数式を入力してみましょう。
<補足>それぞれの引数について
(3)Enterキーを押す
これですべての住所の「県」の位置がわかりました。
この後の応用編で、取り出した文字の位置を使用した活用例をご紹介します!
具体例1では、「県」という文字列を指定しましたが、「空白」を指定することも可能です。
検索文字列に「" "」(全角スペース)を指定しました。3番目に「空白」があると結果が出ました。
ここで注意していただきたいのは、FIND関数は全角スペース、半角スペースの区別をしているということです。例題の氏名は全角スペースで区切られています。試しに半角スペースを指定してみましょう。
検索文字列に「" "」(半角スペース)を指定しました。「#VALUE!」と出てきてしまいます。
姓と名を区切るスペースがある場合、全角か半角か、どちらかに統一する必要があります。
姓と名の空白を調べることで、名字だけ表示することができるようになります。応用編の『FIND関数×LEFT関数』をご確認ください。
同じセル内に検索したい特定の文字が2つ以上ある場合はどのように探すのでしょうか。
市名を取り出すために「市」が何番目か探している場合、今までと同じように数式を設定すると、「1」となってしまいます。
ここでは1番目の「市」の次にある文字を指定するため、開始位置の引数にFIND("市",A2,1)+1を入力します。ここまで見てきて、「指定の文字列が何番目にあるかがわかったところで何に使えるの?」と思うかもしれません。FIND関数は他の関数を組み合わせることで、文字列の中から希望の文字列を取り出すこともでき、非常に便利な関数です。
ここでは他の関数との組み合わせを見ていきましょう。
まず、LEFT関数とは文字列の先頭から文字数を指定して取り出す関数です。
=LEFT(文字列,文字数)
文字列の左端から指定した文字数分の文字列を取り出すことができます。セル【A2】の先頭から3文字分の「長崎県」を取り出すことができました。
しかし、県名は3文字だけではありません。文字数を3と固定してしまうと、LEFT関数だけでは難しそうです。そこでFIND関数と組み合わせていきます。
具体例をもとに実際の数式を確認してみましょう。
基本編の例題1と同じシートを使用していきます。C列に県名列を追加し、この列に県名を取り出します。
(1)表示させたいセルを選択する
(2)数式バーに「=LEFT(A2,FIND("県",A2,1))」と入力し、Enterキーを押す
「県」という文字まで取り出す関数としてLEFT関数を使用し、文字数の引数に基本編で作成したFIND関数の数式を挿入します。
「長崎県」と表示されました。
(3)フィルハンドルをダブルクリックし、すべてに結果を表示させる
LEFT関数と組み合わせることで、文字列の先頭から、FIND関数で指定された文字までを取り出すことができました。この組み合わせはよく使うので、覚えておくと便利です。
日本には、県以外に「東京都、大阪府、京都府、北海道」があります。「県」がついていない場合はどのようにすればいいのでしょうか?
まず都道府県の文字数ルールを考えてみましょう。
東京都、大阪府、京都府、北海道は3文字、県の場合は神奈川県、和歌山県、鹿児島県が4文字の県です。
そこで、IF関数とMID関数を使い,4文字目が「県」ならば、4文字取り出し、それ以外は3文字取り出す式にします。
まず、IF関数、について説明します。IF関数とは論理式が真の時に真の場合を返し、理論式が偽の時に偽の場合を返す関数です。
=IF(論理式,真の場合,偽の場合)
論理式が真の時に真の場合を返し、理論式が偽の時に偽の場合を返すことができます。
長崎県なら〇、長崎県ではなかったら×を表示させました。
次に、MID関数とは、文字列の指定した位置から何文字かを指定して取り出す関数です。
=MID(文字列,開始位置,文字数)
文字列の指定した位置から指定した文字数分の文字列を取り出すことができます。
セル【A2】の4文字目から4文字取り出すことができました。
では、以下の住所一覧から都道府県名を取り出してみましょう。
(1)表示させたいセルを選択する
(2)数式バーに「=IF(MID(A2,4,1)="県",LEFT(A2,4),LEFT(A2,3))」と入力し、Enterキーを押す
この数式は、セル【A2】の1番左から4番目が「県」だったら(MID(A2,4,1)="県")、セル【A2】の左から4文字取り出し(LEFT(A2,4))、4文字目か「県」でなければセル【A2】の左から文字取り出す(LEFT(A2,3))という式です。「北海道」と表示されました。
(3)フィルハンドルをダブルクリックし、表内に数式をコピーする
全ての都道府県を取り出すことができました。
取り出すデータが必ずしも先頭からというわけではないですよね。
そこで、MID関数とLEN関数を組み合わせていきます。3つの関数を組み合わせるのは難しいように感じますが、例題を進めると理解が深まると思います。一緒に見ていきましょう。
まず、LEN関数について説明します。LEN関数とは、文字列の文字数を調べる関数です。
=LEN(文字列)
文字列の文字数を調べることができます。セル【A2】の文字数は全部で「12」あると調べることができました。では、関数を組み合わせた例題を進めていきましょう。
先ほどと同じシートを使用します。
D列を追加し、この列に県以外を取り出していきます。
<操作方法>
(1)表示させたいセルを選択する
(2)数式バーに「=MID(A2, FIND("県",A2,1)+1,LEN(A2)-LEN(C2))」と入力し、Enterキーを押す
「県」の次の文字からすべてを取り出す関数としてMID関数を使用します。
県名の文字数が異なるため、取り出すためのMID関数の開始位置に可変性を持たせるため、FIND関数、取り出す文字数にも可変性を持たせるためにLEN関数を使用します。「佐世保市吉井町板樋」と表示されました。
それぞれの引数についてみていきましょう。
◎補足
(3)フィルハンドルをダブルクリックし、表内に数式をコピーする
色々な組み合わせを使ってみて、少しずつ慣れていきましょう。
まず、RIGHT関数について説明します。
=RIGHT(文字列,文字数)
文字列の右側から文字数を指定して取り出すことができます。セル【A2】の右側から9文字分の「佐世保市吉井町板樋」を取り出すことができました。RIGHT関数とMID関数を使用して、県以外を取り出してみましょう。
<操作方法>
(1)表示させたいセルを選択する
(2)数式バーに「=RIGHT(A2,LEN(A2)-LEN(C2))」と入力し、Enterキーを押す
この数式は、住所から県名の文字数を引いた文字数分(LEN(A2)-LEN(C2))をセル【A2】の右側から表示させるという式です。「佐世保市吉井町板樋」と表示されました。
(3)フィルハンドルをダブルクリックし、表内に数式をコピーする
FIND関数とよく似ている関数として、SEARCH関数があります。SEARCH関数もFIND関数と同様、特定の文字の位置を調べる関数です。SEARCH関数の数式を確認してみましょう。
=SEARCH(検索文字列,対象,開始位置)
指定された文字列を他の文字列の中で検索し、その文字列が最初に現れる位置を左端から数え、その番号を返すことができます。引数はFIND関数と全く同じです。SEARCH関数でも「県」の位置を取り出してみましょう。FIND関数と同じ結果になりました。
では、どこが違うのでしょうか。
まず1つ目の違いは、大文字と小文字を区別するかどうかです。
FIND関数は大文字と小文字は区別され、SEARCH関数は大文字と小文字が区別されません。
2つ目の違いは、検索文字列にワイルドカード(「*」・「?」)が使用できるかどうかです。
FIND関数ではワイルドカードを使用できませんが、SEARH関数にはワイルドカードが使用できます。
※ワイルドカード…文字列を検索するときに、文字の代わりに指定する記号のことです。*(アスタリスク)は任意の複数の文字を表し、?(疑問符)は任意の1文字を表します。以下のブログでも紹介していますので、併せて見てみてください。
まとめると下表の通りです。
FIND関数 | SEARCH関数 | |
大文字と小文字の区別 | される | されない |
ワイルドカード | 使用不可 | 使用可能 |
扱っているデータが日本語、数字のみであれば、どちらを使用しても問題はありません。明確に使い分けを覚える必要はありませんが、もしエラーなどで立ち止まることがあれば、思い出せるようにしておくといいかもしれません。
今回は文字列の位置を調べるFIND関数を中心に紹介しました。FIND関数単体で使うだけではなく、他の関数と組み合わせることで可能性が広がる優れた関数です。ぜひ習得して業務の効率を上げてゆきましょう。
当社では、『Microsoft認定トレーナー』資格を持つEXCEL女子による「Excel研修」を提供しております。書籍化するなど注目いただいている研修です。
社員教育に時間を割けない、Excelスキルの底上げをしたいなどお悩みでしたら、ぜひお気軽にお問い合わせください。