記事の詳細
EXCELで文字列を分解して別の列に格納する方法(LEFT、RIGHT、FIND、LEN関数を使用)
こんにちは。
先日
Excelで名簿を作成する際、名字と名前の間に空白を入れておくと良い理由。
というブログ記事を記載いたしました。
その記事で名字と名前を分ける際に、LEFT、RIGHT、FIND、LEN関数を使用して名字と名前を抜き出す方法の記載があります。
今回はその仕組みについてお伝えします。
今回のブログの見出しはコチラです!
LEFT関数使用し名字を抜き出す。
LEFT関数は、文字列の先頭(左)から指定した文字数分の文字を抜き出す関数です。
なのでLEFT関数を使用する際に必要な情報は
- 文字列
- 文字数
の2つの情報が必要です。
「文字列」は今回の場合は氏名の項目を指定し、「文字数」には名字の数を入力します。
下図は 氏名から文字数2文字を抜き出した時の結果です。
一見うまく名字を抜き出しているかと思いますが、15行目の佐々木さんは名字が3文字のため文字数2ですと正しく抜き出すことができません。
今回のように名字は文字数によって文字数が変わりますので、LEFT関数で抜き出す文字数を指定する数値は可変になるようにする必要があります。
次は抜き出す文字数を判定させる方法についてです。
FIND関数を使用し、抜き出す文字数を判定する
ここで必要になるのがFIND関数です。
FIND関数は指定した文字(列)が、左から数えて何番目にあるのかを探してくれる関数です。
FIND関数を使用する際に必要な情報は
- 検索文字列
- 対象
- 開始位置
の3つです。
1つ目の「検索文字列」には、検索したい文字を指定します。
今回の場合、名字と名前との間にスペースがありますので、スペースを指定します。
2つ目の「対象」は氏名の項目です。
LEFT関数の文字列で指定したところと同じところを指定します。
3つ目の「開始位置」は今回名字を抜き出しますので、1文字目となります。
1文字目の場合、開始位置の入力はしなくても問題ありません。
下図はFIND関数を使用し、名字の数を抜き出した結果です。
=FIND(” ”,氏名)と入力しますと、数値が表示されます。
最初の田中さんの例を見ますと「田中」の名字の後にスペースがありますので、3文字目にスペースがあることになります。
ですので、結果を見ると3という数値が表示されています。
15行目の佐々木さんを見ますと、数値が4となっていますので、このFIND関数を使用することで、名字の文字数によって変動していることがわかります。
それでは、LEFT関数とFIND関数を組み合わせましょう。
LEFT関数とFIND関数を使用し、名字を抜き出す。
それでは下図の田中さんを例に式を作成します。
=LEFT(B2,FIND(” “,B2)-1)
となります。
FIND関数で求めた数値に対して-1を入れていますが、FIND関数で空白分を含んだ文字数となってしまうため、文字数を「-1」しています。
あとは名字の項目でオートフィルを適用させてあげると、それぞれの氏名から名字を抜き出すことができます。
次は名前の抜き出す方法です。
名前を抜き出す方法は、RIGHT、LEN、FIND関数の3つを使用して抜き出します。
RIGHT関数を使用し、名前を抜き出す
RIGHT関数はLEFT関数の反対です。
LEFT関数は文字列の先頭からでしたが、RIGHT関数は文字列の末尾から、指定した文字数分抜き出します。
必要な情報はLEFT関数と同様に
- 文字列
- 文字数
の2つの情報が必要です。
=RIGHT(氏名,2)で名前を抜き出すと下図のようになります。
一見うまく抜き出せているように見えますが、名前が1文字の人(1、11、12行目の人)は不要なスペースも入っている事がわかります。
名字を抜き出した時のようにFIND関数を使用して、名前を抜き出したいところですが、FIND関数だけでは抜き出すことができません。
FIND関数は文字列の先頭から数えるため、名字の数がカウントされてしまいます。
そのため、FIND関数だけでは抜き出したい文字数を求めることができません。
そこで使用するのがLEN関数です。
LEN関数で文字列全体の文字数を求める
LEN関数は、指定した文字列の長さ(文字数)がいくつあるのか数値で教えてくれる関数です。
実際数値を出すとこの下図のようになります。
「田中 猛」さんを例に見ますと、4となっています。
名字が「2」、名前が「1」名前の間にスペースが「1」つありますので、合計4文字となります。
これで氏名から名前を抜き出すための材料が整いましたので、実際に名前を抜き出してみましょう。
LEN関数、FIND関数、RIGHT関数を使用し、名前を抜き出す
LEN関数で全体を求め、FIND関数で名字分を除いたものが、名前の文字数となります。
LEN関数-FIND関数を求めると下図のようになります。
どの数値も名前の文字数になっています。
あとはRIGHT関数を使用して抜き出します。
田中さんを例に抜き出す式を記載します。
で名前を抜き出すことができます。
名前を抜き出したものが下図です。
おわりに
いかがでしたでしょうか?
FIND関数やLEN関数は単体ではあまり活躍する場がないように思いますが、関数を組み合わせることで力を発揮する関数もあります。
ぜひ使ってみてください。