Excel で名前データから「姓」と「名」を抽出する方法

Excel で名前データを集めましたが「姓」と「名」に分ける方法はありますか?
例えば「姓」と「名」の間に半角スペースが挿入されていれば「TEXTSPLIT」関数を使った式で名前データを分割して、別々のセルに抽出できるわ。
半角スペースと全角スペースが混在している場合はどうですか?
それなら半角スペースでも全角スペースでも対応できる式にすれば大丈夫。
関数を使わない方法もありますか?
先頭行の「姓」と「名」だけ手入力すれば「フラッシュフィル」機能でも可能よ。
説明
名前データがあり「姓」と「名」の間にスペースが挿入されている場合、スペースの前後でテキストを分割することで「姓」と「名」に分けて抽出が可能です。
例えば名前データが「A1」にあり、「姓」と「名」の間が「半角スペース」の場合、「B1」に「姓」、「B2」に「名」を抽出するなら「B1」に以下の式を入力します。
=TEXTSPLIT(A1," ")
この場合の「TEXTSPLIT」関数は、セル「A1」のデータを半角スペース「" "」を区切りにして分割しています。
名前データが「A5」まである場合、「B1」を入力後に「B5」まで「オートフィル」操作をすることで「姓」も「名」も一発で抽出できます。
- 選択セル右下の小さな四角い「オートフィルハンドル」をドラッグします。
半角スペースだけなら「" "」ですが、全角スペースも混在するなら「" "」でも分割できるように配列式「{" ", " "}」を使います。
=TEXTSPLIT(A1,{" ", " "})
一方、関数式を使わなくても、Excel の「フラッシュフィル」機能を使えばスペース区切りの名前データから「姓」と「名」を抽出するのは可能です。
例えば名前データが縦に複数並んでいるとき、先頭行だけ、右のセルに「姓」、さらにその右のセルに「名」を手入力、あるいは「コピー&貼り付け」をします。
ここで「B1」セルを選択して現れる「オートフィル ハンドル」を「B5」までドラッグすると「B2」から「B5」まですべてに「佐藤」が入力 (コピー) されます。
- 「オートフィルハンドル」をダブルクリックしても同じ結果です。
このとき「B5」の右下には「オートフィルオプション」アイコンが表示され、クリックすると選択肢が表示されるので「フラッシュフィル」を選択します。
これで「B2」から「B5」まで、左のセルの名前データから「姓」が自動で抽出されます。
同様に「C1」セルを選択して「フラッシュフィル」を実行すれば名前データから「名」が自動で抽出されます。
あるいは「C1」セルを選択した状態で「ホーム」タブのリボンで「編集」グループの「フィル」ボタンメニューから「フラッシュフィル」を選択します。
もしくは「データ」タブのリボンにも「データツール」グループの中に「フラッシュフィル」ボタンがあるので選択することができます。
あとは覚えられるならショートカットキー「Ctrl + E」も便利です。
逆に「姓」と「名」データが分かれて並んでいるとき、右隣のセルに結合した名前データを「フラッシュフィル」で表示することも可能です。
最初の名前データで「姓」と「名」の間に半角スペースを挿入しておけば「フラッシュフィル」を実行したとき、残りの名前データにも半角スペースが挿入されます。
執筆者: 林 俊二





