« 2015年6月 | トップページ | 2015年8月 »

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&" ")

というようです。

| | コメント (1) | トラックバック (0)

Excel で、製品番号と品名を関数で分けてセルに入れる。

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

Y.S さん。
製品番号と品名がくっついているデータを一つのセルにコピー貼り付けしたら、それぞれが別のセルに入力されるようにする例です。
( Excel2013 Home & Business )

■例: MX100 - Hard Disk を MX100 と Hard Disk に分ける。

 

関数で番号と文字の分離の例

 

A2に MX100 - Hard Disk をコピー貼り付け。

B2 に =FIND("-",A2) を入力。

C2に =LEN(A2) を入力。

・ - より左側を抽出
=LEFT(A2,B2-2)
- (ハイホン)を目印にできるので、FIND関数でハイホンが何文字目に来るかを調べる。
LEFT関数で文字列の左端から文字を抜き出す。何文字目まで抜き出すかは「ハイホンの位置-2」で指定できる。
ハイホンの位置が 7 なので5文字まで抜き出すことになる。7 はスペースを含んで数えているので、2を引くことになる。

・ - より右側を抽出
=MID(A2,B2+2,C2)
上と同様に考えて、FIND関数でハイホンの位置を調べた値に 2 を足すと、MID関数で文字を抜き出し始める「開始位置」を指定できる。ハイホンの位置が 7 なので9文字目から抜き出すことになる。

何文字目まで抜き出すかの指定には、LEN関数で求めた元の文字列の全文字数を使っている。
当然ながら、ハイホンより右側は元の文字列よりも文字数が少ない。
ハイホンより右に書いてある文字数(スペース含む)以上であれば、抜き出す数にいくつを指定してもかまわないということ。書いてある文字以外は表示されるはずはないので。

それならば、抜き出す文字数として元の全文字数を使っておけば、「ハイホンより右側」が何文字になっても、常に右側全部を抜き出せる。

■使っている関数について
使っている関数は4種類。
FIND関数、LEN関数、LEFT関数、MID関数。

FIND関数は、指定された文字列を他の文字列の中で検索し、その文字列が最初に現れる位置を左端から数え、その番号を返す。

LEN関数は、文字列の文字数を返す。

LEFT関数は、文字列の先頭から指定された数の文字を返す。

MID関数は、文字列の指定された位置から指定された文字数の文字を返す。

■留意点1(入力するときは、1セル1データ・1件1行で。)
例の画像では、ブログの横幅内におさめるためにわざと表を重ねています。

エクセルでデータを入力するときは画像のような表の作り方をしてはだめです。
このような表の場合、これから2行目以降にどんどんデータを入れていくはずです。エクセルでそんな表を作るときは、1セル1データ・1件1行になるように作ってください。
これから計算したり分析したりするデータを入力するときは「セルの結合」も使いません。入力のときは、とにかく1セル1データ・1件1行になるようにします。

「文字列」「-の位置」「A列の文字数」「-より左側」「-より右側」……

と列見出しが並ぶように。
「価格」や「重量」「寸法」といったほかの項目がまだあるなら、それらも列として並べます。
列が増えて困るのでしたら非表示にすればいいだけです。

■留意点2(自分以外の人が見てもわかりやすいように。)
仕事でファイルを作るときは、「自分以外の人もそのファイルを使う」、「そのファイルは他者に引き継ぐもの」ということを忘れないようにしてください。
この例では4種類の関数を使っていますが、次にファイルを使う人が自分と同等の理解があるとは限りません。仕事で使うファイルは、誰が見てもわかりやすいように作ってください。

例のような場合、一つのセルに式を入れてしまいたくなりがちですが、一つのセルで、

=LEFT(A2,FIND("-",A2)-2)

=MID(A2,FIND("-",A2)+2,LEN(A2))

と入力すると、関数に不慣れな人はぱっと見て、何をどうやっているのかイメージできません。
計算の段階を分けておくことで、どういうことをやっているのかがイメージしやすくなります。

個々の関数がどんな関数なのかは、後任の人が学んで理解するしかありません。そこは本人の努力が必要なところです。
その際に関数に不慣れな人にとって難しいのは、関数がどんな働きをするかをイメージすることかと思います。
不慣れな人でもイメージしやすいように、理解を助けるようにファイルを作っておけば、次にそのファイルを使う人の学びを円滑にできます。

一つひとつはわずかなことですが、そのことは組織全体の生産性の向上にもつながっていきます。
5秒迷うことが20回あると1分迷ったことになります。それを60人がやっていたら1時間になります。

そのように考えると、「そのぐらいわかっておけ」「それぐらいググれ」というのは、自分がやったことの結果に対する考えが浅いというものです。あとでそんなことを言わなくてもよいように最初からしておくべきです。それが効率の良い仕事というものでしょう。

また、関数は単体ではなく「組み合わせて使うもの」ですが、「一つの長い式にして使うもの」ではありません。
(例では関数の結果を別の関数内で使う値として「組み合わせ」ています。)

「一つの長い式が作れることはいいことだ・そうするべきだ」と考えるのは勘違いです。

長い式を作れること自体は、いけないことではありません。ですが、「自分以外の人が見てわかりやすくする」ことは、仕事で使うファイルにはもっと大事なことです。

一つの長い式で処理したくなったら、「そうすることが、他の人にとって見やすいだろうか、わかりやすいだろうか」、「どうやったら自分以外の人も見やすいのか、わかりやすいのか」と考えるようにしてください。

また、「仕事を引き継ぐ」ということを考えると、「なんだかよくわからないファイル」を作らないようにしてください。

  • インターネットに書いてあったことをコピペしたら、なんだかよくわからないけれどできた。
  • 掲示板で教えてもらったとおりにしたら、なんだかよくわからないけれどできた。

とかいうのが「なんだかよくわからないファイル」が職場で生まれる主な原因です。

インターネットを使うなということではありません。使ってより便利になるなら使うべきです。

重要なのは、その際に「なんだかよくわからないことはなくす」、「なにをどうやっているのかを、他人にわかりやすく説明できるぐらいにわかっておく」ということです。

そうでないと、ファイルを引き継いだ人が迷惑します。少し変えたいと思っても何もできません。前任者がなんだかよくわかってないんですから、後任者に説明のしようがないので。

よくわからないので後任者はインターネットで情報を探します。そして、見つけたものをコピペしたり、掲示板で教えてもらったことをやってみたりします。

そしてまた、なんだかよくわからないけれどやりたいことができたファイルが生まれます。

| | コメント (0) | トラックバック (0)

« 2015年6月 | トップページ | 2015年8月 »