Excelの名簿や顧客リストでは、1つのセルに入力された氏名を姓と名に分けたい場面があります。
「山田 太郎」のようにスペースがあるデータなら比較的簡単ですが、「山田太郎」のように区切りがない氏名では、姓名の境目をどう判断するかがポイントです。
この記事では、スペースあり・スペースなしの氏名を対象に、LEFT関数、RIGHT関数、MID関数、FIND関数、SUBSTITUTE関数などを使って姓名を別セルへ分割する方法を解説します。
姓名を分けるときの基本ポイントです。
・半角スペースと全角スペースを区別して確認します。
・スペースありの氏名はFIND関数で位置を取得します。
・スペースなしの氏名は姓の文字数や対応表を基準に分割します。
・1行目は見出しとして、数式は2行目から入力します。
氏名の表記ゆれを整えると、並べ替え、差し込み印刷、検索、宛名ラベル作成などの作業も進めやすくなります。
元データを直接編集せず、別列に数式で分ける方法なら、誤操作を防ぎながら確認できるため安心です。
エクセルで姓名を分ける方法1【スペースありの氏名を関数で分割】
| A列 | B列 | C列 |
|---|---|---|
| 氏名 | 姓 | 名 |
| 山田 太郎 | 山田 | 太郎 |
| 佐藤 花子 | 佐藤 | 花子 |
それではまず、氏名の間にスペースが入力されているデータを姓と名へ分ける方法について解説していきます。
この方法ではスペースの位置を探して、その左側を姓、右側を名として取り出します。
最初に確認したいのは、区切りに使われているスペースが半角か全角かです。
半角スペースの位置をFIND関数で取得する手順
最初に、A列へ氏名、B列へ姓、C列へ名を出力する表を用意します。
サンプルではA1に「氏名」、B1に「姓」、C1に「名」という見出しがあり、A2以降に「山田 太郎」のような半角スペース入りの氏名が入力されている状態です。
FIND関数は、指定した文字が文字列の何文字目にあるかを返す関数です。
A2の「山田 太郎」では、半角スペースは3文字目にあります。
半角スペースの位置を調べる数式です。
=FIND(” “,A2)
この数式の結果は3になります。
姓の文字数を毎回数えなくても、スペース位置を基準にすれば、姓が2文字でも3文字でも同じ考え方で処理できます。
ただし、セル内にスペースが存在しない場合はFIND関数がエラーになるため、スペースなしのデータとは分けて考える必要があります。
LEFT関数で姓を取り出す数式
続いては、スペースより左側にある姓をB列へ取り出していきます。
B2を選択して、次の数式を入力します。
=LEFT(A2,FIND(” “,A2)-1)
LEFT関数は、文字列の左端から指定した文字数だけ取り出す関数です。
FIND(” “,A2)はスペース位置の3を返し、そこから1を引くことで、左から2文字の「山田」を取り出せます。
数式を入力したら、B2セル右下の小さな四角形であるフィルハンドルを下へドラッグします。
これにより、B3以降にも参照先が自動調整された数式がコピーされます。
1行目がヘッダーの場合、数式は必ず2行目から入力すると、表の項目名を誤って分割せずに済みます。
データ量が多い場合には、B2セルをダブルクリックしてオートフィルを実行する方法も便利です。
RIGHT関数で名を取り出す数式
続いては、スペースより右側にある名をC列へ取り出していきます。
C2に入力する数式は次のとおりです。
=RIGHT(A2,LEN(A2)-FIND(” “,A2))
LEN関数は文字列全体の文字数を数える関数です。
「山田 太郎」はスペースも含めて6文字なので、LEN(A2)は6を返します。
そこからスペース位置の3を引くと3となり、RIGHT関数が右端から3文字、つまり「太郎」を取り出します。
この式は名が1文字でも3文字でも利用できます。
RIGHT関数の文字数には、全体の文字数からスペース位置を引いた値を指定することが計算の要点です。
姓と名を分けた後は、B列とC列の表示が元データと一致しているか、数件だけでも目視で確認しましょう。
【操作のポイント】半角スペースの氏名では、B2にLEFT関数、C2にRIGHT関数を入力し、数式を下方向へコピーします。
エクセルで姓名を分ける方法2【全角スペースを含む氏名の分割】
| A列 | B列 | C列 |
|---|---|---|
| 氏名 | 姓 | 名 |
| 鈴木 次郎 | 鈴木 | 次郎 |
| 高橋 美咲 | 高橋 | 美咲 |
続いては、全角スペースで姓と名が区切られているケースを確認していきます。
見た目は半角スペースとほぼ同じでも、Excelでは別の文字として扱われます。
半角スペース用の数式を全角スペースのデータに使うと、FIND関数はスペースを見つけられません。
全角スペースを指定したFIND関数
全角スペースのデータでは、FIND関数の検索文字列に全角スペースを入力します。
B2に姓を取り出す場合の基本式は次のとおりです。
=LEFT(A2,FIND(“ ”,A2)-1)
引用符の間にある空白は、キーボードで入力した全角スペースです。
入力時に半角か全角かを判別しにくい場合は、セルを編集モードにしてカーソル移動を試すか、数式をコピーして利用すると入力ミスを減らせます。
全角スペースは日本語の氏名入力でよく使われますが、外部システムから貼り付けたデータでは半角スペースが混在する場合もあります。
そのため、元データの数行を確認してから数式を決めることが大切です。
全角スペースの右側から名を取り出す方法
続いては、全角スペースの右側にある名をC列へ抽出していきます。
C2には次の数式を入力します。
=RIGHT(A2,LEN(A2)-FIND(“ ”,A2))
数式の仕組みは半角スペースの場合と同じです。
LEN関数で氏名全体の文字数を数え、そこから全角スペースの位置を引くことで、名の文字数を算出します。
全角文字と半角文字が混在していても、ExcelのLEN関数では原則として1文字ずつとして数えられます。
「鈴木 次郎」なら姓の2文字、全角スペースの1文字、名の2文字を合計して5文字です。
全角スペースも文字数として数えられるため、スペース位置を引くだけで名の長さを求められます。
半角と全角が混在する場合のSUBSTITUTE関数
続いては、半角スペースと全角スペースが混在した名簿をまとめて処理する方法を確認していきます。
このような場合は、SUBSTITUTE関数で全角スペースを半角スペースに置き換えてから分割すると扱いやすくなります。
まず、D列を作業列として使い、D2へ次の数式を入力します。
=SUBSTITUTE(A2,” ”,” “)
この数式は、A2の全角スペースを半角スペースへ変換します。
その後、B2には=LEFT(D2,FIND(” “,D2)-1)、C2には=RIGHT(D2,LEN(D2)-FIND(” “,D2))を入力すれば、統一した形式で分割できます。
元の氏名表記を保持したい場合は、置換後の文字列を作業列に出力する方法が実務向きです。
【操作のポイント】全角スペースは「 」を検索文字列として指定します。混在データではSUBSTITUTE関数で表記を統一してから分けます。
エクセルで姓名を分ける方法3【TEXTBEFORE関数とTEXTAFTER関数の活用】
| A列 | B列 | C列 |
|---|---|---|
| 氏名 | 姓 | 名 |
| 伊藤 恒一 | 伊藤 | 恒一 |
| 渡辺 直子 | 渡辺 | 直子 |
続いては、Microsoft 365やExcel 2021以降などで利用できるTEXTBEFORE関数とTEXTAFTER関数を確認していきます。
これらの関数は、区切り文字より前または後の文字列を直接取り出せるため、数式を読みやすくできる点が特徴です。
TEXTBEFORE関数で姓を抽出する方法
TEXTBEFORE関数は、指定した区切り文字より前の文字列を返します。
半角スペース入りの氏名なら、B2に次の数式を入力します。
=TEXTBEFORE(A2,” “)
「伊藤 恒一」というデータでは、半角スペースより前にある「伊藤」が結果として表示されます。
LEFT関数とFIND関数を組み合わせる方法よりも、数式の目的を読み取りやすいことが利点です。
TEXTBEFORE関数では、取り出す文字数を別途計算しなくてよいため、式を短く保てます。
TEXTAFTER関数で名を抽出する方法
続いては、区切り文字の後ろにある名を取り出していきます。
C2には次の数式を入力します。
=TEXTAFTER(A2,” “)
この式では、半角スペースの後にある「恒一」が返されます。
姓と名の間にスペースが1つだけある通常の名簿なら、この数式だけで十分です。
ただし、スペースが連続しているデータや、敬称が追加されているデータでは、想定外の結果になることがあります。
TEXTAFTER関数は区切り文字の後ろをまとめて返すため、氏名以外の文字がある場合は元データの整理が必要です。
数式バーとオートフィルの操作イメージ
続いては、TEXTBEFORE関数を先頭セルへ入力し、下方向へオートフィルする操作を確認していきます。
画像のようにB2へ数式を入力した後、セル右下のフィルハンドルを下へドラッグします。
数式はB3、B4へコピーされ、A列の氏名を参照して姓を自動表示します。
数式の入力先は先頭データ行だけでよく、残りはオートフィルで展開できることを覚えておくと入力作業を短縮できます。
【操作のポイント】TEXTBEFORE関数とTEXTAFTER関数が使えるExcelでは、スペースの前後を直接指定すると数式を簡潔にできます。
エクセルで姓名を分ける方法4【スペースなしの氏名を文字数で分割】
| A列 | B列 | C列 |
|---|---|---|
| 氏名 | 姓 | 名 |
| 山田太郎 | 山田 | 太郎 |
| 佐藤花子 | 佐藤 | 花子 |
続いては、スペースがない氏名を分ける方法について解説していきます。
スペースなしの氏名には明確な区切りがないため、関数だけで全件を完全自動判定することはできません。
姓の文字数が統一されているかどうかで、利用できる分割方法が変わります。
姓が2文字で統一されたデータのLEFT関数
姓がすべて2文字と分かっている名簿なら、B2に次の数式を入力します。
=LEFT(A2,2)
「山田太郎」では左から2文字の「山田」が返されます。
名については、C2に次の数式を入力します。
=RIGHT(A2,LEN(A2)-2)
この式は、氏名全体から先頭2文字を除いた右側の文字を名として返します。
「山田太郎」なら「太郎」、「佐藤花子」なら「花子」です。
ただし、「高橋健一」のように姓が2文字で名が2文字以外でも、姓の長さが2文字ならこの方法で分けられます。
姓が3文字で統一されたデータの分割
続いては、姓が3文字で統一されているデータを確認していきます。
たとえば「佐々木一郎」「長谷川優子」のように、姓を3文字として扱う一覧では、B2へ次の数式を入力します。
=LEFT(A2,3)
名をC列へ取り出す式は次のとおりです。
=RIGHT(A2,LEN(A2)-3)
姓の文字数だけを変更すれば、2文字姓の場合と同じ構造で利用できます。
スペースなしの分割では、姓の文字数を固定値として指定する方法がもっとも基本的です。
一方で、2文字姓と3文字姓が同じ列に混在している場合、この数式だけでは正しく分けられません。
固定文字数で分割する際の確認事項
続いては、文字数で姓名を分割する前に確認したい注意点を整理していきます。
日本の氏名には「一ノ瀬」「五十嵐」「勅使河原」のように、姓の文字数がさまざまなケースがあります。
名についても1文字、2文字、3文字以上が混在するため、氏名全体の文字数だけから境目を推測することは困難です。
そのため、固定文字数で分ける方法は、部署内の限定リストや、姓の桁数が事前に統一されたデータに向いています。
処理後に姓と名を数件ずつ確認し、例外データがないか点検することが重要です。
【操作のポイント】スペースなしの氏名は、姓の文字数が統一されている場合にLEFT関数とRIGHT関数で分けます。混在する場合は次の対応表方式が確実です。
エクセルで姓名を分ける方法5【姓の対応表を使ったスペースなしデータの判定】
| A列 | E列 | F列 |
|---|---|---|
| 氏名 | 姓候補 | 文字数 |
| 佐々木一郎 | 佐々木 | 3 |
| 山田太郎 | 山田 | 2 |
続いては、姓の文字数が混在するスペースなしの氏名を、対応表で判定する考え方を確認していきます。
対象者が限定されている名簿なら、あらかじめ姓の一覧を用意しておくことで、より正確に分割できます。
姓候補の一覧を別シートへ作成する方法
最初に、別シートまたは同じシートの空いている列へ、想定される姓の一覧を作成します。
たとえばE2からE10に「山田」「佐藤」「佐々木」「高橋」「長谷川」などを入力します。
次に、F列へ姓の文字数を表示します。
=LEN(E2)
F2の数式を下へコピーすれば、各姓の文字数が自動表示されます。
対応表は文字数だけでなく、実際の姓そのものを登録するため、固定文字数より判定精度を上げやすいのがメリットです。
XLOOKUP関数で姓候補を参照する考え方
続いては、XLOOKUP関数を使う場合の考え方を確認していきます。
スペースなし氏名から先頭2文字、先頭3文字、必要に応じて先頭4文字を取り出し、それぞれを姓候補一覧と照合します。
たとえば先頭3文字を確認する作業列では、次の数式を使えます。
=LEFT(A2,3)
この結果が対応表のE列に存在するか、COUNTIF関数などで確認します。
=COUNTIF($E$2:$E$100,LEFT(A2,3))
結果が1以上なら、先頭3文字が登録済みの姓候補に一致していると判断できます。
候補一覧は文字数の長い姓から優先して確認すると、「長谷川」を先頭2文字の「長谷」と誤って扱うリスクを抑えられます。
関数だけで判定できない氏名の扱い
続いては、対応表を使っても判定が難しいケースを確認していきます。
同じ文字列でも姓名の切れ目が複数考えられるケースや、旧字体、外国人名、法人担当者名などは、数式だけで安全に判断できないことがあります。
このようなデータは、候補を出力した上で人が確認する運用が現実的です。
完全自動化よりも、例外行を見つけやすい表を作ることが、名簿整備では重要です。
分割結果を値として固定する必要がある場合は、数式結果をコピーし、形式を選択して貼り付けから値を選びます。
【操作のポイント】姓の文字数が混在するスペースなしデータは、姓候補の対応表を作り、長い姓から照合する方法が実務的です。
まとめ エクセルで姓名を分ける方法(スペースあり・なし 関数)
エクセルで姓名を分ける方法は、氏名の間にスペースがあるかどうかで選びます。
半角スペースの氏名では、FIND関数でスペース位置を取得し、LEFT関数で姓、RIGHT関数で名を取り出せます。
全角スペースの氏名では、数式内の検索文字列にも全角スペースを指定します。
半角と全角が混在するデータは、SUBSTITUTE関数でスペース表記を統一してから分割すると処理しやすくなります。
Microsoft 365などでは、TEXTBEFORE関数とTEXTAFTER関数を使うことで、スペース前後の文字列をわかりやすく抽出できます。
スペースなしの氏名は、姓の文字数が統一されているならLEFT関数とRIGHT関数で分けられます。
姓の文字数が混在する場合は、姓候補の対応表を作成し、照合結果を確認する方法が安全です。
元データは残したまま別列へ数式を入力し、結果を確認してから値に置き換える流れにすると、名簿の誤更新を防げます。
氏名の表記を整えて、検索、並べ替え、帳票作成に使いやすいExcelデータへ仕上げていきましょう。