気合いで覚えるWord・Excel7

Excelでのセル分割−姓名編

2007/11/19

 Excelで、郵便番号や住所であれば、ある程度の決まりを元に、二つのセルに分ける事ができる。ただ、住所と並んで「分割」の需要が多い「姓名」に関しては、なかなか簡単にはいかない。
 何しろ、姓名には「何文字目からは名」とか「この文字より右は名」というような規則性がないからだ。姓名合わせて二文字、という単純なものから、姓名を合わせると十文字近くなってしまうものまである。
 というわけで、姓名を分けるのはかなり難しい。しかしながら、ある条件が満たせば、特定の関数を用いる事により、姓名を分ける事は可能だ。
 この「ある条件」とは、「姓と名の間に、スペースなど、特定の文字が入っている」というものだ。逆に言えば、「山田太郎,岸大武郎,小々田浩二,勅使河原太郎左右衛門・・・」などというように、姓名の間に何も入っていない場合は、分割のしようがない。
 上記のようなデータを貰って、「これを姓名で分けてくれ」などと依頼された場合は、「そんな事ができるなら、そっちでやってくれ」と答えるよりない。

 逆に言えば、姓と名の間にスペースなどが入っていれば、分割は可能となる。その方法を以下に紹介したい。
 まず、下準備として必要なのが、「姓と名の間にあるスペースを統一する」という作業だ。姓名の間にスペースがある、といっても、そのスペースの種類・数は多数存在する。たとえば、同じように見える「山田 太郎」と「山田 太郎」でも、左は全角スペース一つ分、右は半角スペース二つ分が入っている。
 データは一つでも、入力する人は多数存在する。その人の癖や気分により、このスペースの種類・数は異なってくるわけだ。
 ただ、これを統一するのは、さほど手間ではない。まず、姓名の入っている列を選択し、編集(E)→置換(E)、もしくは「CtrlとHの同時押し」で、置換え画面を表示させる。

 ここで、まず「検索する文字列(N)」に半角のスペースを、「置換後の文字列(E)」に全角のスペースをそれぞれ入力し、「全て置換(A)」ボタンを押す。まずこれで、半角と全角が統一される。
 引き続き、同様の操作で置換窓を表示させ、今度は「検索する文字列(N)」に「全角スペース二つ分」を「置換後の文字列(E)」に「全角スペース一つ分」を入れて置換える。
 たいていの姓名データはこれで、間の文字が「全角スペース一つ」になる。例外があるが、それの処理については後述する。

 これで「下ごしらえ」は完了した。続いて、関数を使って姓名を分離する。姓名の入っている列の左にデータの入っている列があれば、「列の挿入」を二回行って、姓と名のそれぞれが入る場所を作る必要がある。
 以下、セル「A1」に入っている姓名を分割する、という事を前提に関数を紹介する。
 まず、「姓」の欄には「=LEFT(A1,(FIND(" ",A1)-1))」という関数を入れる。「FIND(" ",A1)」の「" "」に入るのは全角スペースだ。この関数を翻訳(?)すると、「セルA1でスペースのある場所が左から何文字目かを調べる。そして、A1セルで左からそのスペースのある場所の一つ手前までの文字を表示させる」となる。

 続いて、隣のセルに「名」を抜き出す。姓の場合は、始まりが必ず一番左だから簡単だが、名の場合は、どこから「名」になるかが、人によって異なる。ただ、本稿の大前提である「姓名の間にスペースが入っている」があるため、分離する事が可能になる。
 ここに入れる関数は「=MID(A1,(FIND(" ",A1)+1),(LEN(A1)-(FIND(" ",A1))))」となる。「名」の開始位置を指定する必要があるために、関数の名前が変わり、式も複雑になる。しかし、理屈は同じで「スペースの次から、文字列の最後までの文字を表示する」という意味だ。

 これで、姓名の分離は完了する。後は、この関数を下まで張り付ければいい。 なお、ここまで行ってエラーが出たり、変な表示がされる事がある。そういう場合は、元データで姓名の間にあるスペースが三つ以上ある可能性がある。その場合、再び「全角スペース二つを全角スペース一つに置換える」という作業を繰り返せば、関数が自動的に再計算し、正しい値が表示される。
 その後、元の姓名がくっついたデータが不要な場合は、まず分離した姓名それぞれをコピーし、同じ場所に「編集(E)→形式を選択して貼り付け(S)→値(V)」とし、値として張り付ける。これを行わずに、元データを削除すると、せっかく分離した姓名データまで消えてしまうので、注意が必要だ。

 なお、姓名に限らず、「間に定まった文字・記号が入っているデータ」であれば、同様の方法で分離できる。たとえば、「12−5、0−0」などといった「ハイフンが間に入っているデータ」を、「12と5、0と0」という形で分けることも、同様の方法で行うことができる。