FIND関数の使い方

FIND関数 機能
FIND関数
この記事は約10分で読めます。
スポンサーリンク

FIND関数とは指定した文字列が左から数えて何文字目にあるかを探してくれる関数です。

FIND関数は、正直単体で使用する機会はかなり少ないと思いますが、他の関数と一緒に組むことで凄く便利な動きをしてくれる関数なので、是非この機会にマスターしておきましょう。

練習用エクセルファイルを用意したので、必要な方は下記よりダウンロードしてくださいね。

基本的な動き

FIND関数について、例題を見ながらもう少し具体的に見ていきましょう。

検索文字列が検索対象セルに1つの場合

下記例題のようにフルネームの記載があり、苗字とお名前の間に半角スペースがあった場合、FIND関数を使って、この半角スペースが何文字目にあるか見てみましょう。

FIND関数
FIND関数

余白のD2セルに を入れてFIND関数を入れますが、スペルを全て入力しなくて途中まで入力すると候補が出てくるので、候補がある程度絞れた段階でキーボードの矢印キーでFIND関数を選択し、 Tab キーを押して使用する関数を確定させます。

FIND関数
FIND関数

まず最初に第1引数を入力します。
第1引数は検索文字列で、検索したい文字列を指定します。

ここでは半角スペースを検索したいので半角スペースを入力します。

FIND関数
FIND関数

この時、半角スペースは文字列なのでダブルクォーテーション で囲むのを忘れないようにしましょう。

第1引数を入力したらカンマ , を打って第2引数に進みます。
第2引数は検索対象で、第1引数で指定した検索文字列を探す場所を指定します。

ここではA列の氏名から検索したいので、A2セルを指定します。

FIND関数
FIND関数

第3引数は任意の引数で、ここでは使用しないので検索文字列が検索対象セルに2つ以上の場合でご紹介します。ひとまずこのままカッコを閉じて Enter を押して関数を完成させましょう。

D2セルに「3」と表示されています。これはA2セルの値の中で半角スペースは左から数えて3文字目にあることを意味しています。

FIND関数
FIND関数

最後にオートフィルで最終行までFIND関数を反映させれば完了です。

FIND関数
FIND関数

このようにFIND関数は、指定した検索文字列が検索対象セルの左から数えて何文字目にあるかを数値で返してくれる関数になります。

=FIND("検索文字列","検索対象")
=FIND(" ",A2)

検索文字列が検索対象セルに2つ以上の場合

検索文字列が検索対象セルに2つ以上の場合、何も指示をしなければFIND関数最初に出てきた検索文字列が何文字目かを返してきます

下記例題では苗字とお名前の間に半角スペース、そしてお名前の後にも半角スペースが入っています。最初の半角スペースが何文字目に入っているかを出したい場合は、検索文字列が検索対象セルに1つの場合と同じ方法で問題ないですが、2つ目の半角スペースが何文字目に入っているかを確認したい場合、第3引数で開始位置を指定してあげる必要があります。

FIND関数
FIND関数

第3引数を指定して2つ目の検索対象文字列が何文字目に入っているか確認する場合、1つ目の検索対象文字列の位置が固定の場合と変動する場合があります。それぞれ順番に確認していきましょう。

1つ目の検索対象文字列の位置が固定の場合

D2セルに検索文字列が検索対象セルに1つの場合と同じ要領で第2引数まで入力します。

FIND関数
FIND関数

第2引数を入力したら、カンマ , を打って第3引数に進みます。
第3引数開始位置を指定する引数になります。開始位置は1つ目の検索対象が入っている場所+1を数値で入力します。

ここでは2つ目の半角スペースが何文字目か知りたいので、開始位置は1つ目の半角スペースの位置「3」+1で第3引数は「4」になります。

FIND関数
FIND関数

最後にカッコを閉じて Enter を押すとD2セルに「6」と表示されます。これはA2セルの値の中で2つ目の半角スペースは左から数えて6文字目にあることを意味しています。

FIND関数
FIND関数
=FIND("検索文字列","検索対象",1つ目の検索文字列の位置+1)
=FIND(" ",A2,4)

1つ目の検索対象文字列の位置が変動する場合

1つ目の検索対象文字列の位置が変動する場合は、SUBSTITUTE関数で一緒に組むことで指定が可能です。

FIND関数
FIND関数
考え方
  1. SUBSTITUTE関数で2つ目の半角スペースを別の文字列に置換する
    ここでは「★」を使用します
  2. FIND関数で①で置換した文字列が何文字目か確認する

関数をネストする際は中から先に処理されるので、この場合はFIND関数から入れます。D2セルにFIND関数を入れて Tab キーで使用する関数を確定させます。

FIND関数
FIND関数

続いて第1引数の検索文字列を入れますが、これはSUBSTITUTE関数で2つ目の半角スペースを「★」に置換するので「“★”」と入力します。

FIND関数
FIND関数

第1引数を入力したらカンマ , を打って第2引数を入力します。
ここでSUBSTITUTE関数で2つ目の半角スペースを★に置換します。これがFIND関数の第2引数になります。

FIND関数
FIND関数

FIND関数のカッコを閉じたら、2つ目の半角スペースは左から数えて6文字目と返ってきました。

FIND関数
FIND関数

最後にD2セルの関数をオートフィルで最後まで反映させれば完了です。
1つ目の半角スペースの位置が固定でなくても、2つ目の半角スペースが何文字目にあるか正しく反映されました。

FIND関数
FIND関数

FIND関数の第3引数の説明のため、2パターンご紹介しましたが、データの追加があった場合にも関数を修正しなくても良いように、1つ目の検索文字列が固定でもSUBSTITUTE関数と一緒に組む方がオススメです。

=FIND("検索文字列",SUBSTITUTEで2つ目の検索文字列を別の文字列に置換)
=FIND("★",SUBSTITUTE(A2," ","★",2))

セル内の値を分割する

氏名を苗字と名前に分割

1つのセルに入力されているフルネームを苗字と名前に分割して別々のセルに表示したい場合、苗字の文字数が全て同じであれば文字を切り取る関数のLEFT関数のみで対応可能ですが、全て同じ文字数というケースの方が少ないと思います。

そこで、苗字の文字数が異なる場合でも、1つのセルに入力されているフルネームを苗字と名前に分割して別々のセルに表示させる方法をご紹介します。

苗字の文字数が異なる場合でも、FIND関数LEFT関数・MID関数・RIGHT関数LEN関数を一緒に組むことで対応可能です。苗字の文字数が違う下記例題を使用してB列に苗字、C列に名前が表示していきましょう。

FIND関数
FIND関数

まずB列に苗字を表示させるためにLEFT関数FIND関数を一緒に組んでいきます。

考え方
  1. 苗字をLEFT関数で抜き取る
  2. 全てに共通するKeyを探す。今回は苗字と名前の間にある「半角スペース」がKey
  3. 半角スペースが何文字目か分かれば、苗字が何文字目までか分かるので、FIND関数で確認する
  4. 4で確認できた数字をLEFT関数の第2引数に使用する
    ただし、半角スペースは不要なので第2引数にする際は「-1」で調整する

関数をネストする際は中から先に処理されるので、この場合はLEFT関数から入れます。B2セルにLEFT関数を入れて第1引数を入力します。LEFT関数の第1引数は文字列なのでA2セルをクリックするか、A2と入力しカンマ , を打ちます。

FIND関数
FIND関数

続けてLEFT関数の第2引数を入力します。LEFT関数の第2引数は文字数なので、ここにFIND関数を入れます。

FIND関数
FIND関数

次にFIND関数の第1引数である検索文字列を入力します。ここではA2セルから苗字だけを抜き取りたいので、苗字と名前の区切りになっている半角スペースが検索文字列になります。

FIND関数
FIND関数

この時、半角スペースは文字列なのでダブルクォーテーション で囲むのを忘れないようにしましょう。

第1引数を入力したらカンマ , を打ってFIND関数の第2引数に進みます。
第2引数は検索対象なので、ここではA2セルを指定します。

FIND関数
FIND関数

FIND関数のカッコを閉じます。このFIND関数で求めた結果がLEFT関数の第2引数になります。

FIND関数
FIND関数

ただ、FIND関数では半角スページが何文字目にあるかを求めているので、今のままだと「3」となり、LEFT関数の第2引数が「3」になってしまい、半角スペースまで抜き取ってしまいます。そうならないようにFIND関数のカッコを閉じたら「-1」して調整します。

FIND関数
FIND関数

結果的にLEFT関数の第2引数FIND関数で求めた半角スペースの位置である3から調整の1をマイナスした「2」となります。

FIND関数
FIND関数

LEFT関数のカッコを閉じたらキーボードの Enter キーを押すとB2セルにはA2セルの苗字だけが抜き取って表示されました。

FIND関数
FIND関数

最後にオートフィルで最後まで関数を反映させれば完成です。苗字の文字数に関係なく苗字だけ抜き取ることができました。

FIND関数
FIND関数

続けてC列に名前を表示させるためにRIGHT関数LEN関数FIND関数を一緒に組んでいきます。

考え方
  1. 名前をRIGHT関数で抜き取る
  2. 全てに共通するKeyを探す。今回は苗字と名前の間にある「半角スペース」がKey
  3. 半角スペースが何文字目か分かれば「苗字+Keyの文字数」が分かるのでFIND関数で確認する
  4. LEN関数でフルネームの文字数を出し、「苗字+Keyの文字数」を引けば名前が何文字か分かる
  5. 4で確認できた数字をRIGHT関数の第2引数に使用する

関数をネストする際は中から先に処理されるので、この場合はRIGHT関数から入れます。C2セルにRIGHT関数を入れて第1引数を入力します。RIGHT関数の第1引数は文字列なのでA2セルをクリックするか、A2と入力しカンマ , を打ちます。

FIND関数
FIND関数

次にLEN関数を入れます。求めたいのはA列のフルネームの文字数なのでA2を指定してカッコを閉じます。

FIND関数
FIND関数


このフルネームの文字数から、苗字+半角スペースの文字数をマイナスしたいのでキーボードで と入れたらFIND関数を入れます。

FIND関数
FIND関数

苗字と名前の区切りになっている半角スペースが何文字目か分かれば、苗字+半角スペースの文字数が分かるので検索文字列に半角スペースを入れます。

FIND関数
FIND関数

第1引数を入力したらカンマ , を打ってFIND関数の第2引数に進みます。
第2引数は検索対象なので、ここではA2セルを指定します。

FIND関数
FIND関数

FIND関数のカッコを閉じます。このLEN関数で出した数字からFIND関数で求めた結果を引いた数字がRIGHT関数の第2引数になります。

FIND関数
FIND関数

RIGHT関数のカッコを閉じたらキーボードの Enter キーを押すとC2セルにはA2セルの名前だけが抜き取って表示されました。

FIND関数
FIND関数

最後にオートフィルで最後まで関数を反映させれば完成です。苗字の文字数に関係なく名前だけ抜き取ることができました。

FIND関数
FIND関数

フルネームを苗字と名前に分割して表示する場合、今回の半角スペースのように共通のKeyがあればフラッシュフィル機能でも対応可能です。

ただ、フラッシュフィル機能だと関数に組み込むことができなかったり、対応できないものも結構あるので、その時の用途に応じて使い分けていただけたらと思います。

まとめ

氏名の分割に限らず、FIND関数は他の関数と一緒に組むことでとっても自由度の高い動きをしてくれる関数なので、基本的な使い方をしっかりマスターしておきましょう

タイトルとURLをコピーしました