いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Excel)苗字と名前を分割する

 Excelで、1つのセルに入力されている苗字と名前(姓と名)を2つのセルに分割する方法を紹介します。
 なお、苗字と名前はスペースで区切られているものとしますが、他の記号で区切られている場合でも同様に、あるいは少しの変更で対応できます。

  • TEXTSPLIT関数を使って苗字と名前を分割することができます。
  • 「区切り位置」メニューやフラッシュフィルを使って分割することもできます。

手順

TEXTSPLIT関数を使う方法

 B3:B6の範囲に氏名が入力されています。苗字と名前が1つの全角スペースで区切られているところがポイントです。
 これに対しC3セルに次のような式を入力し、さらに下方にコピーすることで苗字と名前を分割して出力しています。

 C3セル

=TEXTSPLIT(B3," ")

 新しい関数であるTEXTSPLIT関数を使い、区切り文字(全角スペース)を第2引数で指定することにより、苗字と名前に分割して2つのセルに出力しています。
 従来はFIND関数やLEFT関数などを組み合わせる必要があり、しかも出力先のセルごとに式を入力しなければなりませんでしたが、TEXTSPLIT関数だと1つの式で複数のセルに文字列を分割することができて便利です。


 こちらは少し複雑なデータの例です。
 苗字と名前の間に全角スペースだけでなく半角スペースが挿まれているケースもあります(B6セル)。さらに複数の全角スペースと半角スペースが挿まれているケースもあります(B3セルとB4セル)。
 しかし関数式を少し工夫することで、きれいに分割できています。

 C3セル

=TEXTSPLIT(B3,{" "," "},,TRUE)

 第2引数(区切り文字)を「{" "," "}」とすることで、半角文字と全角文字の両方を区切り文字とみなして分割しています。
 さらに第4引数をTRUEとする(空白を無視する)ことで、複数の区切り文字が連続していても(B3セルやB4セルのケース)、空白のセルを出力させることなく苗字と名前の2つの文字列だけを出力するようにしています。

「区切り位置」メニューを使う方法

 ここでは区切り位置メニューを使って分割してみます。
 データは1つ上の例と同じく、苗字と名前の間に1つまたは複数の半角/全角スペースが挿まれているというものです。
 ただし出力については、B列に苗字だけを残し、C列に名前を出力するものとします(後述のとおり、出力先の列を変更することもできます)。


 まずは対象データであるB3:B6の範囲を選択した状態で、ウインドウ上部の「データ」タブを選択し、「区切り位置」メニューをクリックします。


 ダイアログが現れます。
 「コンマやタブなどの区切り文字によって~」が選択されていると思いますので(違ってたらこれを選択)、そのまま「次へ」をクリックします。


 区切り文字の「スペース」にチェックを入れ、さらに「連続した区切り文字は1文字として扱う」にチェックを入れます(このケースではこの項目に自動でチェックが入ります)。
 そして「次へ」をクリックします。


 ここでは特に変更するところがありませんので、そのまま「完了」をクリックします。


 苗字の出力先がB列となるため「既にデータがありますが~」の警告が出ますが、かまわずOKをクリックします。
 苗字をC列に、名前をD列に出力させる場合は1つ上の画面の「表示先」欄の値を「$C$3」に変更しておきます。


 以上で分割が完了しました。

フラッシュフィルを使う方法

 ここではExcelのユニークな機能であるフラッシュフィルを使って分割してみます。
 データは2つ上の例と全く同じで、苗字と名前の間に1つまたは複数の半角/全角スペースが挿まれています。分割の仕方も同様で、苗字をC列に、名前をD列に出力させるものとします。


 まず、最初のデータであるB3セルの氏名を苗字と名前に分割した結果を、C3セルとD3セルに手動で入力します


 そしてC3セルを選択した状態で(表内の同じ列ならどこでもOK)、「データ」タブを選択して「データツール」のグループにあるフラッシュフィルのアイコンをクリックします。


 するとC4以下のセルに苗字が一括して入力されました。C3セルの例に基づき入力内容を自動的に判断してくれた結果です。


 同様にD3セルを選択した状態でフラッシュフィルのアイコンをクリックすると名前が自動で入力され、完了となります。