FIND関数で2番目以降の文字列位置取得と抜き出しの方法

ここでは、エクセルのFIND関数で「複数ある文字の2つ目以降の位置を検索する方法」を解説します。

 

2つ目の位置を検索する数式と、3つ目の位置を検索する数式を説明し、これらを使って電話番号を分ける例も紹介します。

1.「2番目以降の位置を求める」とは

まずは、「2番目以降の位置を求める」とはどのようなことか、例を挙げてみてみます。

 

例として分かりやすいのは、電話番号です。

 

電話番号は「-」が2つ使われます。

例えば、上のように「0120-11-2222」という番号があったとします。

 

この番号から「-」の位置を知りたいといった時、「0120」と「11」の間の「-」が一つ目の、「11」と「2222」の間の「-」が二つ目の「-」となります。

 

それぞれの「-」の位置を知ることができれば、他の関数との組み合わせで任意の文字列を抜き出すことができるようになります。

 

ここでは、この「〇番目の文字の位置」を求める数式について説明します。

2.2番目の文字の位置が分かる数式は

まずは、2番目の位置が分かる数式から見てみます。

 

2-1.数式の形は

数式の形は、次の通りです。

=FIND(検索文字列,対象,FIND(検索文字列, 対象)+1)

 

指定する引数の種類と指定の仕方は、FIND関数の普段の使い方と同じです。 

 

対象には、「文字を抜き出す元の文字列」を入れます。

 

検索文字列には、「検索する文字列」を入れます。

 

なお、どちらも同じ値を2か所に入れます。

 

これで、「検索文字列」で指定した2番目の文字の位置が返ってきます。

 

2-2.例で確認

先ほどの例を使って、2番目の「-」の位置が返ってくるか見てみましょう。

上の「0120-11-2222」という電話番号から「2番目のハイフン(-)」の位置を求めてみます。

 

セルC1に入力した数式は、次の通りです。

=FIND("-", A1, FIND("-", A1)+1)

 

手で数えてみても、確かに2番目の「-」は8番目であることが分かります。

 

2-3.先頭から2番目の文字の1つ前までを抜き出すには

先頭から2番目の文字の1つ前までを抜き出したい時、数式の形は次のようになります。

=LEFT(対象,FIND(検索文字列,対象,FIND(検索文字列,対象)+1)-1)

 

先ほどのFIND関数を使った数式に、LEFT関数を組み合わせます。

 

引数は、対象と検索文字列の2つだけです。

 

これで、先頭から検索文字列で指定した2番目の文字の1つ前までを抜き出すことができます。

例えば、セルA1に入った「0120-11-2222」の先頭から2つ目の「-」の1つ前までを抜き出したい時、数式は次のようになります。

=LEFT(A1,FIND("-", A1, FIND("-", A1)+1)-1)

3.3番目の文字の位置が分かる数式は

 次に、3番目の位置が分かる数式を見てみます。

 

3-1.数式の形は

数式の形は、次の通りです。

=FIND(検索文字列,対象,FIND(検索文字列,対象,FIND(検索文字列,対象,FIND(検索文字列,対象)+1)+1))

 

こちらも、指定する引数の種類と指定の仕方は、FIND関数の普段の使い方と同じです。 

 

ただし形を見ればわかる通り、「検索文字列」と「対象」をそれぞれ3か所に同じ値で入れます。

 

これで、「検索文字列」で指定した3番目の文字の位置が返ってきます。

 

3-2.例で確認

また例で、3番目の「-」の位置が返ってくるか見てみましょう。

セルC1に入力した数式は、次の通りです。

=FIND("-",A1,FIND("-",A1,FIND("-",A1,FIND("-",A1)+1)+1))

 

手で数えてみても、確かに3番目の「-」は13番目であることが分かります。

 

3-3.先頭から3番目の文字の1つ前までを抜き出すには

先頭から3番目の文字の1つ前までを抜き出したい時、数式の形は次のようになります。

=LEFT(対象,FIND(検索文字列,対象,FIND(検索文字列,対象,FIND(検索文字列,対象,FIND(検索文字列,対象)+1)+1))-1)

 

引数の数は多くなりましたが、種類はやはり「対象」と「検索文字列」の2種類だけです。

 

これで、先頭から検索文字列で指定した3番目の文字の1つ前までを抜き出すことができます。

例えば、セルA1に入った「0120-11-2222-3333」の先頭から3つ目の「-」の1つ前までを抜き出したい時、数式は次のようになります。

=LEFT(A1,FIND("-",A1,FIND("-",A1,FIND("-",A1,FIND("-",A1)+1)+1))-1)

4.市外局番、局番、下4桁を抽出する

最後に、説明した数式を使って電話番号から「市外局番」、「局番」、「下4桁」を抽出してみます。

3-1.市外局番を抜き出す

「市外局番」を抜き出す時の基本的な考えは、次の通りです。

ポイント
  • LEFT関数で文字列の先頭から「『1番目の-の位置』-1」個の文字を抜き出す

つまり、数式の形は次の通りです。

=LEFT(対象,FIND(検索文字列,対象)-1)

 

これで、1番目の「-」よりも左側の文字列(市外局番)を抜き出すことができます。

例でいうと、数式は次のようになります。

=LEFT(A1,FIND("-",A1)-1)

 

3-2.局番を抜き出す

「局番」を抜き出す時の基本的な考えは、次の通りです。

ポイント
  • MID関数で文字列の「『1番目の-の位置』+1」番目の文字」を開始位置にして、「『2番目の-の位置』-『1番目の-の位置』+1」個の文字を抜き出す

つまり、数式の形は次の通りです。

=MID(対象,FIND(検索文字列,対象)+1,FIND(検索文字列,対象,FIND(検索文字列,対象)+1)-FIND(検索文字列,対象)-1)

 

これで、1番目の「-」と2番目の「-」の間の文字列(局番)を抜き出すことができます。

例でいうと、数式は次のようになります。

=MID(A1,FIND("-",A1)+1,FIND("-",A1,FIND("-",A1)+1)-FIND("-",A1)-1)

 

3-3.下4桁を抜き出す

「下4桁」を抜き出す時の基本的な考えは、次の通りです。

ポイント
  • RIGHT関数で「文字列の全体の文字数-『2番目の-の位置』」個の文字を抜き出す

つまり、数式の形は次の通りです。

=RIGHT(対象,LEN(対象)-FIND(検索文字列,対象,FIND(検索文字列,対象)+1))

 

これで、2番目の「-」以降の文字列(下4桁)を抜き出すことができます。

例でいうと、数式は次のようになります。

=RIGHT(A1,LEN(A1)-FIND("-",A1,FIND("-",A1)+1))

 

以上参考になれば幸いです。

 


口コミ・評判のいいExcel本の紹介】


FIND関数に関連したページは、次の通りです。。

  • FIND関数 使いこなすためのポイントはこちら
Top