検索
連載

【Excel】一筋縄ではいかない「姓」と「名」を自動で分離する方法Tech TIPS

Microsoft Excelで管理している顧客名簿などで、「名前」欄を「姓」と「名」に分けたいということはないだろうか。このような場合、「長宗我部 元親」のように「姓」と「名」の間にスペースがあると簡単に分離可能だが、スペースがなく「長宗我部元親」となっていると簡単にはいかない。そこで本Tech TIPSでは、手作業なしに「名前」を「姓」と「名」に分ける方法を紹介する。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「Tech TIPS」のインデックス

連載目次

対象:Excel 2016/2019/2021/365


Excelで「名前」の「姓」と「名」への分離を手作業なしにこなす
Excelで「名前」の「姓」と「名」への分離を手作業なしにこなす
Excelで「名前」を「姓」と「名」へ分離したい場合、「名前」の入力状態によっては簡単に分けられないことがある。そこで本Tech TIPSでは、1つのセルに入力されている「名前」を「姓」と「名」に分ける方法を紹介しよう。なお画面の住所録データは、「テストデータ・ジェネレータ」で作成したテスト用のダミーデータである。

 「Microsoft Excel(エクセル)」で顧客名簿などを管理していることも多いと思う。その名簿の1つのセルに入力されている氏名を「姓」と「名」に分けなければならないといった場合、どのように処理しているだろうか。

 氏名を見ながら、コピー&ペーストで分離するのは、少ない件数でも結構面倒な作業だ。

 そこで、本Tech TIPSでは、1つのセルに入力されている「名前」を「姓」と「名」に分ける方法を紹介しよう。

「姓」と「名」の間にスペースがある場合

 「長宗我部 元親」のように「姓」と「名」の間にスペースがあって、1つのセルの中で「姓」と「名」が明らかに分かれているような場合は、[区切り位置指定]ウィザードで簡単にセルに分けられる。関数を使って分離することも可能だが、[区切り位置指定]ウィザードの方が間違いなく簡単だ。

 まず、「名前」が入力されている列の右側の列を全選択して、列番号の表示部分を右クリックして、[挿入]を選択して、「名前」列の右側に空白の列を挿入しておく。

 次に、「名前」列を全選択して、[データ]タブの[データツール]グループにある[区切り位置]をクリックする。すると、[区切り位置指定]ウィザードが起動するので、「データのファイル形式を選択してください」欄で「コンマやタブなどの区切り文字によってフィールドごとに区切られたデータ」を選択し、[次へ]ボタンをクリックする。

 フィールドの区切り文字の指定画面が表示されるので、「区切り文字」欄で区切り文字となっている「スペース」や「コンマ」にチェックを入れる。この際、「スペース」の場合は、「連続した区切り文字は1文字として扱う」にチェックを入れておくと、間違って「スペース」が2文字分入力されているような場合でも「姓」と「名」に正しく分割できる。結果は、「データプレビュー」欄で確認するとよい。

 [次へ]ボタンをクリックすると、区切り後の列のデータ形式が指定できるので、氏名を分割する場合は、「文字列」を選択しておき、[完了]ボタンをクリックする。

 これで、「名前」が入力されていた列が「姓」のみとなり、右隣の列に「名」が入力される。

「姓」と「名」の間にスペースがある場合(1)
「姓」と「名」の間にスペースがある場合(1)
「名前」欄のデータが「姓」と「名」の間にスペースが入っている場合、簡単に「姓」と「名」の分離が可能だ。
「姓」と「名」の間にスペースがある場合(2)
「姓」と「名」の間にスペースがある場合(2)
「名前」列の右隣りの列番号部分を右クリックし、表示されたメニューの[挿入]を選択する。
「姓」と「名」の間にスペースがある場合(3)
「姓」と「名」の間にスペースがある場合(3)
「名前」列の右隣りに空白の列が挿入される。[データ]タブの[区切り位置]をクリックする。
「姓」と「名」の間にスペースがある場合(4)
「姓」と「名」の間にスペースがある場合(4)
[区切り位置指定]ウィザードが起動するので、「コンマやタブなどの……」の方を選択し、[次へ]ボタンをクリックする。
「姓」と「名」の間にスペースがある場合(5)
「姓」と「名」の間にスペースがある場合(5)
区切り文字が「スペース」なので、「スペース」にチェックを入れる。また、スペースが2つ入っている場合にも対応できるように「連続した区切り文字は1文字として扱う」にもチェックを入れておく。
「姓」と「名」の間にスペースがある場合(6)
「姓」と「名」の間にスペースがある場合(6)
区切り後のデータ形式は、文字列を指定しておく。「データのプレビュー」欄で確認し、[完了]ボタンをクリックする。
「姓」と「名」の間にスペースがある場合(7)
「姓」と「名」の間にスペースがある場合(7)
「名前」列に「姓」が上書きされるため、確認ダイアログが表示されるので、[OK]ボタンをクリックする。
「姓」と「名」の間にスペースがある場合(8)
「姓」と「名」の間にスペースがある場合(8)
「名前」列に「姓」が上書きされ、挿入した列に「名」が入力される。

「姓」と「名」の間にスペースがない場合はWEBSERVICE関数を使う

 「長宗我部元親」のように「姓」と「名」の間にスペースがない場合、「姓」と「名」の区切り位置が明確でないため、[区切り位置指定]ウィザードでは分離できない。日本人の「姓」は「佐藤」や「鈴木」のように2文字が多いものの、「南」や「長宗我部」などの「姓」もある。そのため、単純に文字数で区切ることもできない。

 この場合、手作業で分割するのも容易ではないので、WEBSERVICE関数を使って「ExcelAPI」が提供する氏名を分割するサービスを利用するとよい。ただし、インターネットを経由して、ExcelAPIに対してデータとなる「名前」が逐次送信され、「姓」と「名」のそれぞれを取り出すことになるので、組織の個人情報保護などのルールを守って利用してほしい。

 なおExcelAPIは、1日1万件までは無料で利用可能だが、個人情報の即時削除機能を有効にするには有償のSTANDARDプラン(月額4400円)以上の申し込みが必要になる点に注意してほしい(ExcelAPIの「価格表」)。

 また、「姓」と「名」の分離は、人間が見ても分かりにくいものもあるので、完璧ではない点にも注意が必要だ。必ず分離後の「姓」と「名」を確認しよう。

 呼び出し方は簡単で、「姓」と「名」を入力したいセルに以下の数式を入力すればよい。数式の「type=last」は「姓」を、「type=first」は「名」を取り出す指定で、「fullname="&ENCODEURL(<氏名が入力されたセル>)」で元の「名前」を指定する。

■姓
=WEBSERVICE("https://api.excelapi.org/person/name-separate?type=last&fullname="&ENCODEURL(<氏名が入力されたセル>))

■名
=WEBSERVICE("https://api.excelapi.org/person/name-separate?type=first&fullname="&ENCODEURL(<氏名が入力されたセル>))

「姓」と「名」を分離するWEBSERVICE関数

 「名前」が入力されている先頭の行で、この数式を試してみて、「姓」と「名」に分離できたら、オートフィルを使って全ての行にコピーすればよい。

WEBSERVICE関数を使って「姓」と「名」を分離する(1)
WEBSERVICE関数を使って「姓」と「名」を分離する(1)
「名前」が「姓名」のように続いていて「姓」と「名」の間に区切り文字がない場合、[区切り位置指定]ウィザードでは分離できない。
WEBSERVICE関数を使って「姓」と「名」を分離する(2)
WEBSERVICE関数を使って「姓」と「名」を分離する(2)
ExcelAPIをWEBSERVICE関数で呼び出して、「名前」を「姓」と「名」に分離する。「姓」と「名」はそれぞれのパラメーターを付けて呼び出す必要がある。
WEBSERVICE関数を使って「姓」と「名」を分離する(3)
WEBSERVICE関数を使って「姓」と「名」を分離する(3)
WEBSERVICE関数で「姓」と「名」に分離できたら、それをオートフィルでコピーする。分離された「姓」と「名」は、「名前」列の右側に「文字列」として挿入するなどすればよい。

生成AIを使っても「姓」と「名」の分離は可能

 生成AI(人工知能)を使っても「名前」から「姓」と「名」の分離が可能だ。この場合も、生成AIの利用に関する組織のルールを守る必要がある点に注意してほしい。

 ChatGPTの場合、入力したデータを学習に利用されないように、ChatGPTの[設定]ダイアログにある[データコントロール]で「すべての人のためにモデルを改善する」の項目を「オフ」にして、学習に利用されないようにしよう。

ChatGPTでデータが学習に使われないように設定する(1)
ChatGPTでデータが学習に使われないように設定する(1)
WebブラウザでChatGPTを開き、ログインする。右上のアイコンをクリックし、[設定]を選択する。
ChatGPTでデータが学習に使われないように設定する(2)
ChatGPTでデータが学習に使われないように設定する(2)
[設定]ダイアログが開くので、左メニューの[データコントロール]を選択し、「すべての人のためにモデルを改善する」をクリックする。
ChatGPTでデータが学習に使われないように設定する(3)
ChatGPTでデータが学習に使われないように設定する(3)
「すべての人のためにモデルを改善する」のスイッチを「オフ」にして[実行する]ボタンをクリックする。これで、入力したデータが学習に使われなくなるはずだ。

 また、企業向けの有償プラン「ChatGPT Enterprise」を契約するなどしてセキュリティを確保しておくとよい。

 なお、Windows 10/11で標準の「Copilot in Windows」、Webブラウザで利用可能な「Microsoft Copilot」の場合、サインインした状態では「このファイルはブロックされています」と表示されて「姓」「名」の分離が実行できなかった。ただしサインアウトすれば、ChatGPTと同様、「姓」と「名」の分離が可能だ。

 以下、ChatGPTを例に、生成AIを使った「姓」と「名」を分離する手順を紹介しよう。

 Webブラウザで「ChatGPT」ページを開き、ログインしておく。「ChatGPTにメッセージを送信する」の入力ボックスに「以下の氏名を姓と名に分離してCSV形式で出力してください」と入力後、[Shift]+[Enter]キーを2回押し、改行を2つ入力する。Excelの「名前」列をコピーして、ChatGPTの入力ボックスに[Shift]+[Ctrl]+[V]キーで貼り付け、[Enter]キーを押す(単に[Ctrl]+[V]キーで貼り付けると、画像として貼り付けられることがあるため)。

 するとCSVファイルが作成され、そのダウンロードリンクが表示されるので、リンクをクリックしてCSVファイルをダウンロードする。ダウンロードしたら、Excelの[ファイル]−[開く]を選択して、CSVファイルを選択して読み込むと、[テキストファイル]ウィザード([区切り位置指定]ウィザードと同じ)が起動する。ここで「区切り文字」欄で区切り文字となっている「コンマ」を指定すると、「姓」と「名」が分離されたデータが入力された新しいブックが開く。

ChatGPTを使って「姓」と「名」に分離する(1)
ChatGPTを使って「姓」と「名」に分離する(1)
WebブラウザでChatGPTを開き、「ChatGPTにメッセージを送信する」の入力ボックスに「以下の氏名を姓と名に分離してCSV形式で出力してください」と入力する。[Shift]+[Enter]キーを2回押してから、Excelの「名前」列をコピーして、ChatGPTの入力ボックスに[Shift]+[Ctrl]+[V]キーで貼り付け、[Enter]キーを押す。
ChatGPTを使って「姓」と「名」に分離する(2)
ChatGPTを使って「姓」と「名」に分離する(2)
ChatGPTによって、「姓」と「名」を分離したCSVファイルが作成される。ダウンロードリンクをクリックして、CSVファイルをダウンロードする。
ChatGPTを使って「姓」と「名」に分離する(3)
ChatGPTを使って「姓」と「名」に分離する(3)
ダウンロードしたCSVファイルをExcelで読み込む。自動的に[テキストファイル]ウィザードが起動する。[テキストファイル]ウィザードは、[区切り位置指定]ウィザードと同じなので、区切り文字として「コンマ」を選択すれば、「姓」と「名」が分離した状態でデータが読み込める。
ChatGPTを使って「姓」と「名」に分離する(4)
ChatGPTを使って「姓」と「名」に分離する(4)
新しいブックにCSVファイルが読み込まれる。「姓」と「名」が正しく分離されていることを確認する。分離された「姓」と「名」は、「名前」列の右側に「文字列」として挿入するなどすればよい。

 CSVファイルのリンクが作成されずに、「姓,名」という形式でデータが出力されることもある。この場合は、右上の[コピー]アイコンをクリックして、データをコピーする。これをExcelの新しいシートやブックに貼り付ける。

 1つの列に「姓,名」が貼り付けられるので、この列を選択した状態で[データ]タブの[データツール]グループにある[区切り位置]をクリックして[区リ位置]ウィザードを起動して、「姓」と「名」の間にスペースがある場合と同じ手順で、「区切り文字」欄で区切り文字となっている「コンマ」を指定する。

 これで「姓」と「名」が分離されるので、「姓」列と「名」列をそれぞれオリジナルのシートにコピーすればよい。

 生成AIの場合も、WEBSERVICE関数を使う場合と同様、完璧ではないので、必ず出力された「姓」と「名」を確認すること。

Copyright© Digital Advantage Corp. All Rights Reserved.

ページトップに戻る