エクセル住所録の作成ー4「氏名を入力→自動で姓名分割、フリガナ表示」

氏名を追加しても適正に姓名を分割表示

使用関数:LEFT、RIGHT、FIND、LEN、PHONETIC

データの入力は単調で疲れる作業です。手入力する箇所を必要最小限にするため、関数をフル活用しましょう。このページでは「氏名」の入力と同時に「姓」「名」を自動で分割表示、更に「フリガナ」も自動表示するよう設定していきます。

LEFT・RIGHT・LEN・FIND関数を組み合わせる

Wordの差し込み印刷と連携させるために「姓」「名」を分割してそれぞれのセルに収めておく必要があります。とは言っても、同じ氏名を2度入力する手間は避けたいですね。Excelには区切り位置指定やフラッシュフィルという便利な機能が備わっているのでデータを全て入れ終わってから一括で「姓」「名」分割してもいいのですが、この住所録ではデータの入力だけで作業を完結させたいので関数を使います。

氏名から姓を取り出す

氏名から「姓」だけを取り出すには文字列操作の関数を組み合わせて使います。

一つはLEFT関数。対象となる文字列の左端から指定数だけ文字を取り出します。「相田 宗一郎」という氏名が対象文字列なら、指定数を「」とすれば「相田」が取り出せますね。

宛名データの名字が全て2文字ならこれで完了ですが、そうはイカの…(以下略)。1文字から場合によっては4文字の名字もありますから、その調整のためにFIND関数の力を借ります。これは検索文字が、対象となる文字列の先頭から何文字目にあるかを見つけてくれる関数です。

氏名を入力する際は「姓」と「名」の間に必ず全角スペースを一つ入れておきます。この全角スペースをFIND関数の検索文字に指定すれば、「相田 宗一郎」の場合は「」を返してくれるということです。
全角スペースの先頭からの位置を返す
FIND関数が数えてくれた全角スペースまでの文字数から全角スペース自体の文字数1を引いた値がLEFT関数の指定数になるよう数式を組み立てればいいわけですね。

「姓」フィールドの最初のセルをクリックして「数式」→「関数ライブラリ」→「文字列操作▼」から「LEFT」を選択。ダイアログボックスを開きます。
関数ライブラリの文字列操作からLEFTをクリック
LEFT関数の引数は2つ。対象となる「文字列」の欄では「氏名」の最初のセルをクリック。テーブルで使う数式は構造化参照になっているので、[氏名]とフィールド名が入りました。
LEFTの引数「文字列」の欄に氏名のセル
次の引数「文字数」にFIND関数が入ることは上記の説明でお判りだと思います。この欄にカーソルを置いたら、画面左上の名前ボックス▼から「その他の関数」を選び、「関数の挿入」画面で分類を「文字列操作」にし、「FIND」をクリック。
その他の関数からFINDを選択
FIND関数のダイアログボックスが開いたら、「検索文字列」にダブルクォーテーションで囲った全角スペースを入力します→「" "」(※注意:「"」は半角で、スペースはかなモードにして全角で入力します!)。「対象」はLEFT関数の「文字列」と同じ。「氏名」の最初のセルをクリックしてフィールド名を入れます。
FIND関数のダイアログで検索文字に全角スペースを指定、対象に氏名を指定
開始位置」は省略すると先頭文字を指定したとみなされます。…で、ここでは省略。「OK」は押さずに、数式バーの「LEFT」の文字をクリックしてLEFT関数のダイアログに戻ります。
数式バーのLEFTをクリック
LEFT関数ダイアログの「文字数」に「=FIND(" ",[氏名])」という数式が入っていますね。既に説明したように、FIND関数で数えた全角スペースまでの文字数=FIND(" ",[氏名])」から、全角スペース自体の文字数1を引いた値をLEFT関数の引数「文字数」に指定するので、入った数式の末尾に「-1」を付け足します。
FIND関数の数式の末尾に-1を追加
これで「OK」。
「姓」が取り出された
「姓」が取り出されて表示されました。

氏名から「名」を取り出す

「名」を取り出します。薄々察しがついてるとは思いますが、今度使うのはRIGHT関数。対象となる文字列の右端から指定数だけ文字を取り出す関数です。「相田 宗一郎」という氏名が対象文字列なら、指定数を「」とすれば「宗一郎」が取り出せますが、名字と同じく名前の文字数も一つではないので、こちらも他の関数の力を借ります。

検索の要になる文字はここでも全角スペース。先程、「姓」を取り出した時に組み立てたFIND関数の式「=FIND(" ",[氏名])」を使い回します。
全角スペースの先頭からの位置を返す
↑はFIND関数で導き出した全角スペースまでの文字数を表した図です。冴えてる人はピンときたと思いますが、文字列の総数からこの数式の答えを引けば「名」が取り出せるはずですね。文字列の総数を数えてくれる関数といえば、LEN(レングス)。ここまでわかれば数式の組み立ては簡単です。

ダイアログでの操作は「姓」とほぼ同じ。LEN関数の引数は氏名の文字列だけですから、
LEN関数のダイアログで文字列に氏名を指定
RIGHT関数の「文字数」に入れた「LEN([氏名])」の数式の末尾に「(マイナス)」を入力。
RIGHT関数のダイアログで文字数にLEN関数の数式を入れて末尾に-を追加
=FIND(" ",[氏名])」を「-」の後に続ければいいだけです。
-の後にFIND関数の式を追加
「名」が取り出されて表示されました。
「名」が取り出された
テーブルを拡張して、氏名を追加していっても、
氏名を追加しても適正に姓名を分割表示
正常に分割されています。

数式は「=RIGHT([氏名],LEN([氏名])-FIND(" ",[氏名]))」=「全角スペースが氏名の文字列の中で先頭から何文字目にあるかを数え、氏名の総数からその数を引いた数の文字を氏名の文字列の右端から抜き出す」

※上記の数式をそのまま使うとデータ入力前のセルにエラーが表示されるため、IFERROR関数に入れ子しておきましょう。
=IFERROR(LEFT([氏名],FIND(" ",[氏名])-1),"")
=IFERROR(RIGHT([氏名],LEN([氏名])-FIND(" ",[氏名])),"")

PHONETIC関数でフリガナ

氏名を入力すると同時に表示させる項目がもう一つ。「フリガナ」。PHONETIC関数を使います。

設定はいたって簡単ですが、データの入力時に絶対外せない注意事項があります。

PHONETICには「音声を表記する」という意味があり、入力時の読みを記憶して表記する関数なのです。「大河内 明」を「おおこうち あきら」と入力すれば問題はないのですが、変換後が同じだからと「おおかわうち めい」みたいにキーを叩いちゃうと、そのまんまフリガナに表示されてしまいます。氏名の入力時にはこのことをしっかり頭に入れておいて下さい。

「フリガナ」の最初のセルを選択して、「数式」→「関数ライブラリ」→「その他の関数」→「情報」→「PHONETIC」
関数ライブラリのその他の関数の情報からPHONETICをクリック
氏名のセルをクリックして指定すればOK。
引数に氏名を指定
これで完了。フリガナが表示されました。
フリガナが表示された

PHONETIC関数について、詳しく知りたい方は以下の記事を参照して下さい。

PHONETIC関数

住所録の作成・次のエントリー

郵便番号表とVLOOKUPで郵便番号から住所1を自動表示する

タイトルとURLをコピーしました