エクセルで氏名を姓と名に分割する方法
「山田 太郎」のように1つのセルにまとまった氏名を、DMの宛名印刷やシステムへの取り込みのために「姓」「名」の別々の列に分けたい場面があります。この記事では、スペースの位置を基準に氏名を分割する方法を解説します。
手順1:スペースの表記を統一する
分割の基準にするスペースが、半角・全角どちらであるかがバラバラだと数式が安定しません。先に全角スペースを半角に統一しておきます。
=SUBSTITUTE(A2," "," ")
手順2:スペースより前を「姓」として取り出す
FIND関数でスペースの位置を調べ、LEFT関数でその手前までを取り出します。
=LEFT(A2,FIND(" ",A2)-1)
手順3:スペースより後を「名」として取り出す
MID関数を使い、スペースの次の文字から末尾までを取り出します。
=MID(A2,FIND(" ",A2)+1,LEN(A2))
Microsoft 365ならTEXTBEFORE・TEXTAFTERが簡単
Microsoft 365版のExcelでは、より直感的な専用関数が使えます。
=TEXTBEFORE(A2," ")(姓)
=TEXTAFTER(A2," ")(名)
TEXTBEFORE・TEXTAFTERは比較的新しい関数のため、買い切り版のExcel(2021以前)では使用できません。その場合はFIND・LEFT・MIDの組み合わせで対応します。
スペースが無い氏名は機械的に分割できない
「山田太郎」のようにスペースを挟まずに入力されている氏名は、どこまでが姓でどこからが名かをExcelの関数だけで判別することはできません。日本語の姓名を正確に分割するには、姓・名の辞書データと形態素解析のような仕組みが必要で、単純な文字列処理の範囲を超えます。この場合は手入力での分割、または元データの入力段階で姓名を別々の列にしてもらうよう依頼するのが現実的です。
手作業の限界
- スペースが2つ以上ある氏名(ミドルネームや旧姓併記など)は、想定通りに分割されないことがあります
- スペースなしの氏名は本記事の方法では分割できません
- スペース区切りが統一されているリストであれば、本記事の手順で十分対応できます
分割前に、まず表記ゆれを整えておく
氏名を分割する前段階として、全角半角の統一やスペースの統一が必要になることがよくあります。リストクリーナーにアップロードすれば、こうした表記ゆれの統一とあわせて、重複(名寄せ)のチェックも一括で行えます。データはブラウザ内で処理され外部に送信されません。無料で100行まで試せます。
無料でリストを整形してみる