Excel。氏名を苗字で分割したいが区切りがないので困っています。
<LEFT&SUBSTITUTE関数 LEN&RIGHT関数>
データを読み込んでみたら、次のようになっていました。
氏名フィールドのデータを姓フィールドと名フィールドに分割して管理したいのですが、氏名フィールドのデータには、半角や全角の空白などもありません。
区切る場所がわからないので、簡単にわけることができません。
データタブの「フラッシュフィル」をつかったところで、区切るポイントがExcel側としても判断できないので、処理はできません。
Excel VBAでプログラムならばと考えても、区切る位置がわからないので、自動的に区切ることができません。
要するに、このようなデータを分割するには、区切りになる場所は、自分自身で用意しなければいけないわけです。
そこで、氏名フィールドのデータに区切り位置を表す、半角や全角のスペースを入力し修正するのは、面倒です。
そこで、別の列。
今回は、F列に、区切り位置の数値を用意します。
C列の姓フィールドを算出していきます。
C2には、
=LEFT(A2,F2)
と数式を設定したら、オートフィル機能をつかって、数式をコピーします。
これで、姓フィールドが算出することができました。
続いて、名フィールドの算出方法ですが、SUBSTITUTE関数をつかうと、別の列に色々算出しないで、スマートに名フィールドに、名前を算出することができます。
D2に次の数式を設定します。
=SUBSTITUTE(A2,C2,"")
数式をコピーします。
これで、名フィールドに名前を抽出することができました。
SUBSTITUTE関数をつかうと、なぜ、名前を抽出することができたのかを確認していきます。
SUBSTITUTE関数は、指定した文字列を置換することができる関数です。
SUBSTITUTE関数の引数は、
SUBSTITUTE(文字列,検索文字列,置換文字列,[置換対象])
となっています。
文字列には、A2。「伊藤博文」という文字が対象です。
検索文字列には、C2。先程算出した、苗字を検索するわけです。
置換文字列には、「””」。「””」は空白という意味なので、苗字のところを空白に置換することができます。
苗字が空白になるので、残ったのが名前という仕組みです。
SUBSTITUTE関数は、色々使える重宝な関数です。
また、手順は増えてしまいますが、SUBSTITUTE関数を使う方法以外にも、RIGHT関数を使う方法もあります。
氏名フィールドの文字数をLEN関数で算出して、その数値を、F列の区切り位置の数値を減算すると、名前の文字数が算出できます。
あとは、算出結果をつかってRIGHT関数で名前を抽出する方法もあります。
Excelのデータは、分割よりも結合するほうが、簡単なので、できれば、最初から、姓と名を分けておくことをおススメします。