« Excel で、製品番号と品名を関数で分けてセルに入れる。 | トップページ | お前は暇だな!? »

Excelで、姓と名前の間に全角スペースを入れる。

この記事は自分用の覚書です。

F.K さん。
エクセルで、「姓と名前の間に全角スペースを入れる」件の例です。
( Excel2013 Home & Business )

自動的にというか一発でというかは無理です。
過程のどこかで人間が目で確認して整える作業が必要です。

姓って1文字・2文字・3文字、珍しいですが4文字もあります。どこまでが姓でどこからが名前なのかなんて人間にしかわからないですから。
全員2文字の姓とかだったら整える作業はしないで済むのですけどね。

■例:姓と名前の間に全角スペースを入れる。

姓と名前の間に全角スペースを入れる例

例ではA列に元になる氏名を入れて、B列でLEFT関数を使って氏名の左から2文字を取り出しています。
姓としては一番多いであろう2文字をまず抜き出しておくというわけです。

この時点で姓だけを抜き出せているか視認して、違っていたらLEFT関数を修正するしかないと思います。
色を付けているのが、うまく姓を抜き出せていないセルです。外国の方の場合はどう処理するかも決めておく必要がありますね。

B列で使っているLEFT関数は、
=LEFT(A2,2)
というような式になっています。
修正するのは右端の 2 ですね。3文字の姓だったら 3 にします。

C列では、SUBSTITUTE関数を使って氏名のうち姓の文字だけを、 姓+全角スペース に置換しています。
=SUBSTITUTE(A2,B2,B2&" ")
という式になっています。

A2 → A2の値(氏名)を対象にしています。
B2 → そのうちB2にある値(姓のみ)を置き換えます。
B2&" " → 何に置き換えるかをこの部分で指定しています。B2の値(姓)に全角スペースを付けたものに置換します。

その結果、姓と名前の間に全角スペースが入ったものができあがります。

■この件でのREPLACE関数の使用
REPLACE関数の話ですが、答えは「仕事で使うファイルではこの件でREPLACE関数を使ってはいけない」です。

確かにB列で
=REPLACE(A2,3,," ")
という式を入力しても姓と名前の間に全角のスペースを入れることができますが、REPLACE関数はこういう使い方をしてはいけません。

なぜいけないかは次のようです。

REPLACE関数の書式は、
REPLACE(文字列, 開始位置, 文字数, 置換文字列)
です。

そしてヘルプを見ると、 REPLACE関数の4つの引数は「必ず指定します」となっています。

=REPLACE(A2,3,," ") の式では、3番目の引数(開始位置から何文字を置き換えるかの文字数)が省略されています。
それでもエラーも起こらず処理がされるのは、いわばエクセルが例外として気を利かせてくれているからといえます。

ヘルプに「必ず指定します」となっている引数を省力しているのですから、その式は "間違った式" です。
ですから、エクセルのバージョンアップや WindowsUpdate などで、ある日突然答えが得られないことが起きる恐れがあります。

それが明日起こるのか、5年後に起こるのか、あるいはいつまでもまったく起こらないかもしれません。
でも、突然起こっておかしくないんです。必ず指定することになっているのにしていないのですから。

いつ答えが得られなくなってもおかしくないファイルを、仕事で使うのは危険です。だから、この件では「REPLACE関数を使ってはいけない」ということになります。

■2017/10/2追記
F.K さん。

姓を抜き出す際に、 LEFT 関数で使う「抜き出す文字数」を別の列に入れておく件のやり方です。

こちらのほうが修正しやすいという話ですね。

Seitona02

B列で「抜き出す文字数」を指定しています。

最初の例のときと同じように、この時点で姓だけを抜き出せているかを確認して、違っていたら B列の数字を必要な数に直します。
LEFT 関数ではB列の値を使っているので、数字を修正したらすぐにC列に反映されます。

LEFT 関数が入っているセルをいちいち修正するのではなく、A列とC列を見比べながらB列の数字を入れ直すだけなので、修正がはるかに簡単だと思います。

最初からこちらのやり方にしておけばよかったです。
「作業列を使う」というやり方です。B列が「作業列」です。

B列を修正したのが次の例です。

「江戸川乱歩」は、B列の値を 2 から 3 に、「森鴎外」は 2 から 1 に修正しました。
「ルース・レンデル」については、B列には 0 を入れて、「抜き出す文字はなし」にしてあります。

Seitona03

D列の数式は、「芥川龍之介」なら

=SUBSTITUTE(A2,C2,C2&" ")

というようです。

|

« Excel で、製品番号と品名を関数で分けてセルに入れる。 | トップページ | お前は暇だな!? »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Excelで、姓と名前の間に全角スペースを入れる。:

« Excel で、製品番号と品名を関数で分けてセルに入れる。 | トップページ | お前は暇だな!? »