7/08/2015

Excel。Extra space。氏名を苗字と名前に分けてみたら、エラー続出!原因は余計な空白だった


Excel。氏名を苗字と名前に分けてみたら、エラー続出!原因は余計な空白だった

SUBSTITUTE関数・TRIM関数


なんとなくシリーズになってきました、氏名を苗字と名前に分けてみよう。
全角空白では抽出させるためのターゲットにしているのに、半角空白になっていたら、
エラーが出たので、全角空白なら、全角空白に半角空白なら、
半角空白に統一しましょうと書きましたが、やっぱりエラーが消えない。

という方がいましたので、確認してみると、今回も原因は空白でした。

下記の表があります。

このようなエラーが出ていたわけですね。

見た目は、全角空白が空いているように見えますが、
実はこれ、半角空白が2つ入っていて、
見た目全角空白が入力されているように見えたわけですね。

つまり、空白が余計だったわけです。


このような余計な空白を消去させるには、TRIM関数を使うのがいいかと思いますね。

Wordのように、編集記号の表示非表示とかあれば、見た目でわかるのですが、
Excelはわからないので、TRIM関数を使って一発変換というのがいいでしょうね。

今回は、わかりやすいようにA列を使ってTRIM関数の結果を表示していきます。

では、A3をクリックしましょう。
TRIM関数ダイアログボックスを表示しましょう。

文字列にB3を入力しましょう。
あとは、OKボタンをクリックしましょう。

見た目特に変わってないようにも見えますが、
A4とB4を見比べると、空白の数が変わっているのが確認できますね。

これで、余計な空白を取り除くことができましたので、
A列のデータをB列に値の貼り付けでコピーしてみましょう。

これで、終わりと思いきや、エラーは表示されたまま。
原因は、半角空白が2個だったのが、1個になったわけなので、
余計な空白はなくなったのですが、全角空白で苗字と名前を分けていますので、
半角空白を全角にしてあげる必要があります。

そこで、余計な空白も削除して、
半角空白を全角空白にいっぺんに処理する方法をご紹介します。
SUBSTITUTE関数とTRIM関数のネストです。

TRIM関数の結果を貼り付ける前の状態に戻して、A列も削除しておきます。
では、改めて、A3をクリックして、SUBSTITUTE関数ダイアログボックスを表示しましょう。

文字列には、TRIM(B3)
これで、余計な空白を消去することができます。
検索文字列には、” “ 半角空白ですね。
置換文字列には、” “ 全角空白ですね。
置換対象 省略してもいいですが、一文字目なので1と入力します。

あとは、OKボタンをクリックします。
数式をコピーしておきましょう。

A列の結果を、B列に値の貼り付けでコピーしてみましょう。

これで、エラーも消えましたね。
一発でやる方法もありますので、用途に合わせて使ってみてはどうでしょうか?

7/05/2015

Excel。delimiter_position。氏名を苗字と名前に分割するのに、別に関数を使う必要はないのです。


Excel。氏名を苗字と名前に分割するのに、別に関数を使う必要はないのです。

区切り位置


数回前から、氏名を苗字と名前に分割する方法をご紹介しておりますが、

別に、LEFT関数+FIND関数で苗字を抽出するとか、
RIGHT関数+LEN関数+FIND関数で名前を抽出する方法が、スタンダードなのですが、

関数にこだわる必要がないならば、もっと簡単に氏名から苗字と名前をそれぞれ、
抽出することができるので、今回はその方法をご紹介します。

関数が万能という訳ではない

というケースですね。

では、下記の表があります。

今回紹介するのは、

【区切り位置】

という方法です。

これを知っていると色々使えて便利なんですよ。

では、まず、B3:B6を範囲選択します。

そして、データタブのデータツールにある、区切り位置ボタンをクリックすると、
区切り位置指定ウィザード-1/3ダイアログボックスが表示されます。

データのファイル形式を選択してください は、

カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ を選択します。

今回はスペースで、苗字と名前が区切られていますので、チェックが付いたままでOKですので、
次へボタンをクリックします。

区切り位置指定ウィザード-2/3ダイアログボックスに、
ダイアログボックスが変わっていきますので、

区切り文字のスペースに、チェックをつけたら、

次へボタンをクリックしましょう。

区切り位置指定ウィザード-3/3ダイアログボックスに移りましたら、

列のデータ形式はG/標準のままでOKですので、
表示先のボックスを、変更しますので、C3をクリックしましょう。

=$C$3と表示が変わりましたら、

完了ボタンをクリックしてみましょう。

なんと、氏名を苗字の列と名前の列にわけることが出来ちゃいましたね。

関数でアレコレ考えて悩むよりも、Excelの機能を使ったほうがいいというケースの1つでしょうね。

しかも、関数で算出するよりも、利点があって、その一つが、数式ではないという事。

どういうことなのかというと、C3をクリックしてみると、

数式や関数で算出している訳ではないので、
直接、抽出した文字が入力されていますので、仮に数式で求めた後に、

コピー&値の貼り付けの処理をワザワザしなくてもよくなるわけですね。

まぁ、このような氏名や住所などは、
本来、それぞれフィールド名を細かく設定してあげておく方が、いいのではないかと思われます。

一つに合体させるには、& を使えば、簡単に、一つにすることが出来ます。

例えば、B3のような氏名をつくりたいのならば、
=C3&” “&D3 という数式で表示させることも出来ますよ。

7/02/2015

Excel。division。氏名を苗字と名前に分割。けどちょっとの事で、うまくいきません!


Excel。氏名を苗字と名前に分割。けどちょっとの事で、うまくいきません!

置換・SUBSTITUTE関数


前回、氏名を苗字の列と、名前の列にそれぞれ、わけて抽出する方法をご紹介しましたが、
これに後日談がありまして、取引先の担当者さんから、教えてもらったようにやったんだけど、
エラーがアチコチで、出ているんだけど?ということで、見にお伺いさせていただいたら、
やっぱりなぁ~というエラーでしたので、

ちょっとした、些細な事なのですが、苗字と名前に分ける時だけではなくて、
よくあるトラブルなので、そのトラブルと対応方法をご紹介してきます。

下記の表があります。

C5とD5に、#VALUE! というエラーが表示されていますね。
このエラーがアチコチに出ていたわけです。

原因は、B列にあります。

氏名の列をみると、格段、見た目で【?】のところはないように、一瞬思いと思いますが、
エラーが出ている、B5は、苗字と名前の間の空白が、全角の空白ではなくて、

半角の空白になってしまっているんですね。

これが、エラーの原因です。
なぜ、エラーになったのかというと、C列とD列それぞれの数式を確認してみましょう。

C列には、
=LEFT(B5,FIND(" ",B5,1)-1)

D列には、
=RIGHT(B5,LEN(B5)-FIND(" ",B5,1))

FIND関数のところが、全角空白を検索するようになっています。

ところが、半角空白になっていると、見つけることが出来ないので、
エラーが発生してしまったわけです。

些細な事なのですが、
全角空白と半角空白。

パソコン上では、大きな違いなのです。
では、どうやって修正したらいいでしょうか?

一か所でしたら、自力で半角空白を全角空白にかえてるという方法もアリだと思いますが、複数ある場合には、どうしたらいいのか?

そこで、SUBSTITUTE関数を使って…と紹介したいところですが、
SUBSTITUTE関数を使うと、それを算出させる列が必要になりますので、
置換で処理をしてしまったほうが、楽なケースもあります。

なんでも、関数。という訳ではなく、結果的に、ちゃんと抽出できれば、OKなわけですから。
今回もそれで、修正されましたので、まずは、置換からやってみてはどうでしょうか?

では、B列を範囲選択します。

ホームタブの検索と選択をクリックして、置換をクリックして、
置換ダイアログボックスを表示しましょう。

表示されましたら、

置換タブの
検索する文字列のボックスには、半角空白を入力します。
置換後の文字列のボックスには、全角空白を入力します。
あとは、すべて置換ボタンをクリックしましょう。

メッセージボックスが表示されてきますので、OKボタンをクリックしましょう。

半角空白が全角空白になったことにより、エラーから回復されましたね。

半角空白と全角空白。些細な差かもしれませんが、
パソコンにとって、Excelにとっては、全く別ですので、ご注意ください。

なので、分割抽出するのなら、
最初から、苗字と名前で列を作って入力したほうがデータの精度が高くなると思われますよ。


6/29/2015

Excel。divide。氏名を苗字と名前で分割したいというリクエスト 関数編


Excel。氏名を苗字と名前で分割したいというリクエスト 関数編

LEFT&RIGHT&LEN&FIND関数


2013年の9月に掲載したことのあるネタなのですが、最近よく、教えてほしいと耳にしますので、
今回改めて、氏名を苗字と名前に分割する方法をご紹介していきます。

前回は、2回に分けて、苗字と名前に分ける方法をそれぞれ紹介しましたが、
今回は1つにまとめてご紹介していきます。

まず、下記の表があります。

B列の氏名をC列に苗字、D列に名前とそれぞれ、分けて表示するようしていきますので、

まずは、C列の苗字からご紹介してきましょう。

なお、ポイントですが、B列の氏名。苗字と名前の間には、
全角のスペースが一文字分入っております。

苗字は、氏名の左側から空白文字までの文字数ということになりますから、
LEFT関数を使用していきます。

それでは、C3をクリックして、LEFT関数ダイアログボックスを表示しましょう。

文字列には、B3

そして、

文字数ですが、全角の空白を見つけるために、FIND関数を使いますので、
文字数のボックスをクリックして、FIND関数ダイアログボックスを表示していきましょう。

検索文字列は、全角の空白を探しますので、” “
対象は、B3。
開始位置は、最初に登場する、全角の空白を探しますので、1 と入力しましょう。

あとはOKボタンをクリックします。では完成した数式をオートフィルで連続コピーしましょう。

C3の数式は、
=LEFT(B3,FIND(" ",B3,1))
です。

しかし、ここでもう、ワンポイント!

正確には、苗字+全角空白がC列には表示されているのです。
つまり見た目には、苗字だけが抽出されたように見えますが、全角空白も混ざっています。

C列を自動調整してみると、長曾我部の部のあとに、
一文字分のスペースが残ることがわかります。

ですので、
C3の数式を、

=LEFT(B3,FIND(" ",B3,1)-1)

とマイナス1を付けてあげるのが、ポイントになります。

データの正確性と汎用性を考えた時には、マイナス1を付けることを忘れないようにしましょう。

続いて、名前ですね。

今度は、全体の文字数から全角空白までの文字数を引いてあげて、
その答えの文字数を右側から抽出するという方法になりますので、

まずは、RIGHT関数を使います。D4をクリックして、
RIGHT関数ダイアログボックスを表示しましょう。

文字列には、B3。
文字数には、全体の文字数を算出するために、LEN関数ダイアログボックスを表示します。

文字列には、B3 と入力します。これで、文字数が全体の文字数になります。

数式バーの作りかけである、数式のRIGHT という文字をクリックすると、
RIGHT関数ダイアログボックスに戻ります。

文字数には、LEN(B3)と表示されていますが、
全角空白までの文字数を引きますので、-(マイナス)を入力して、

今度は、FIND関数ダイアログボックスを表示しましょう。

FIND関数は先程のLEFT関数の時と変わりませんので、
検索文字列は、” “ 全角の空白を入力します。

対象はB3

開始位置は1と入力して、OKボタンをクリックしましょう。
あとは、数式をコピーしましょう。

これで、名前の列も完成しました。
このようにすると、苗字・名前を分けることが出来ましたね。

<過去の掲載>
Excel。氏名から苗字を抽出する方法
http://infoyandssblog.blogspot.jp/2013/09/excel-leftfind.html

Excel。氏名から名前を抽出する方法
http://infoyandssblog.blogspot.jp/2013/09/excelrightlenfind.html

6/26/2015

Excel。Vertical_bar_graph 。なんじゃこりゃ!縦棒グラフを作ってみたら横軸が1・2・3ってなっている!


Excel。なんじゃこりゃ!縦棒グラフを作ってみたら横軸が1・2・3ってなっている!

縦棒グラフ


Excelでグラフを作成するのは、とても簡単なのですが、グラフの基になる表によっては、

【なんじゃこりゃ!】

って言いたくなってしまうようなトラブルが発生することがありまして…

グラフを頻繁に作っている人でしたら、また出たな。
で済むのですが、あまりご縁が無い方ですと、ご質問になるものがあります。

その一つに、ちゃんと範囲選択はしたんだけど、
グラフの横軸が1・2・3…ってなってしまうというもの。

上の図のように、B3:D8を範囲選択をして、集合縦棒グラフを作ってみると、あらら!
横軸が、1・2・3…ってなってしまっていますよね。

これでは、困ってしまうので、これをどうやったら、ご希望のグラフになるのかを、
今回はご紹介していきます。

実は、これ、結構質問があるんですよ。

この表自体は、全く問題はありません。
ただ一つ、Excelが混乱してしまったところがあるのです。それは、B列の年。
この年。
2010~2014まで入力されていますが、【数値】になってしまっているのが原因なのです。

見出しに”年”とありますので、2010年と入力しないで、2010としたことにより、
Excelが混乱してしまったのです。

このようなケースになった場合は、デザインタブのデータの選択を使って、
データの範囲を変更していくのが良いと思われます。

では、グラフをアクティブにしておいて、デザインタブの【データの選択】をクリックしましょう。

データソースの選択ダイアログボックスが表示されました。

横(項目)軸ラベルを見てみると、1~5までの数値が入ってしまっていますので、
これを修正していきますので、編集ボタンをクリックしましょう。

軸ラベルダイアログボックスが表示されてきましたので、軸ラベルの範囲を選択します。

B4:B8を範囲選択しましょう。すなわち、2010~2014ですね。

OKボタンをクリックすると、元に戻ります。

次に、凡例項目(系列)にある、年が不要ですので、選択して、削除ボタンをクリックしましょう。

あとは、OKボタンをクリックしましょう。

これで、横軸が年にかわりましたね。

このように、数値で構成された表をグラフにすると、

今回のような現象が発生してしまいますので、
その場合は、デザインタブの【データの選択】で修正するのがいいでしょう。

なお、このようなケースを発生させないようにするためには、
下記のような表を作るのも一つの手です。

先程の表と違うのは、2010年と入力してあることです。こうすることで、文字認識になります。

では、グラフを作ってみましょう。

修正することなく、グラフを作成することができました。


6/23/2015

Excel。Extraction。抽出したデータの元データの条件付き書式を使ってセルを塗りつぶしたい


Excel。抽出したデータの元データの条件付き書式を使ってセルを塗りつぶしたい

条件付き書式


大きなデータから、1行データを抽出したいというリクエストで、
VLOOKUP関数を使って抽出する方法やINDEX関数と配列を使って抽出する方法を
ご紹介してきましたが、実はさらに続編がありまして、抽出したデータが、
元データの表のどこにあるのかが、すぐにわかるように、

【その行に色を付けることはできませんかね?】

というもの。

たしかに、元データのどこにあるのかが、色分けされれば、わかりやすくになりますよね。

ということで、
今回は、抽出したデータの元データの行(レコード)のセルを塗りつぶす方法をご紹介してきます。

下記の表があります。

A2にNOを入力すると、下の表から該当するデータを抽出してくるというものでしたね。

ちなみに、B2には、
=VLOOKUP($A2,$A$6:$H$14,COLUMN(),FALSE)

という数式を設定しています。

VLOOKUP関数とCOLUMN関数のネストのテクニックでした。
詳しくは、前回書いておりますので、ご覧になっていただければと思います。

さて、今回やりたいのは、A2にNOを入力したら、
下の表にある該当するデータの行のセルを塗りつぶしたいわけです。

このような時には、条件付き書式の登場となります。

では、見出し行を除いて、データ全体を範囲選択しますので、A6:H14まで範囲選択をしましょう。

ホームタブの条件付き書式をクリックして、【新しいルール】をクリックしましょう。

セルの強調表示ルールにある、文字列では対応しきれないので、
今回は新しいルールで作っていきます。

新しい書式ルールダイアログボックスが表示されてきましたので、
ルールの種類を選択してくださいの【数式を使用して、書式設定するセルを決定】を選択します。

ルールの内容を編集してくださいにある、
次の数式を満たす場合に値を書式設定のボックスに数式を作っていくわけですね。

このボックスには、
=$A$2=$A6

という数式を入力します。A2は固定しておかないといけませんので、絶対参照を設定します。

わかりにくいのは、$A6。

考え方として、範囲選択した左上のセル。
今回はA6が該当します。まずは、このセルと同じかどうかという数式を作ります。

仮に=$A$2=A6だとして、オートフィルで隣のB6に連続コピーしたイメージすると、
数式が、=$A$2=B6となってしまいます。

今回は、列が変わってしまっては都合が悪いので、
列だけを固定しますので、複合参照になりますので、

=$A$2=$A6

という数式を設定します。
あとは、書式ボタンをクリックして、

セルの書式設定ダイアログボックスが表示されたら、塗りつぶしタブから色を設定しましょう。

OKボタンをクリックすると、元のダイアログボックスに戻ります。

新しい書式ルールダイアログボックスに戻りましたら、OKボタンをクリックしましょう。

これで完成ですね。

条件付き書式は、アイディア次第で色々出来ますよ。

6/19/2015

Excel。一覧表から行単位で抽出するならVLOOKUP関数とCOLUMN関数もおススメ。


Excel。一覧表から行単位で抽出するならVLOOKUP関数とCOLUMN関数もおススメ。

VLOOKUP関数+COLUMN関数


前回、INDEX関数と配列関数の組み合わせをつかって、VLOOKUP関数ではなくて、
一覧表から行単位で該当するデータを抽出する方法をご紹介しました。

が、実は、後日談がありまして、
A列のNOが通し番号ではなくて、商品コードのような個別番号だったそうでして…

つまり、前回の方法では通し番号を新たに挿入しないと抽出できないわけです。

NOが、A-01と文字列になっています。ではA2をA-01と入力してみると

ありゃま。#VALUE! というエラーになってしまいましたね。

A2が列番号である数値ではなくなってしまったからですね。

このような場合は、VLOOKUP関数を使うほうが便利になります。
しかし、VLOOKUP関数の列番号をどうしたらいいのか?というのが、今回のポイントになります。

では、B2:H9を削除しておきます。

また、A2に入力するデータがアルファベットと数字の混合なので入力しにくいので、
入力規則のリストを設定しておきます。

A2をクリックして、データタブの入力規則をクリックしましょう。

データの入力規則ダイアログボックスが表示されます

設定の入力値の種類を リスト にして、

元の値 には、A6:A14を範囲選択します。 =$A$6:$A$14 と入力されました。
そして、OKボタンをクリックしましょう。

NOが選択しやすくなりましたね。

では、本題のVLOOKUP関数を作っていきましょう。

B2をクリックして、VLOOKUP関数のダイアログボックスを表示しましょう。

検索値には、A2を入力しますが、列方向に数式をコピーしますので、
列を固定しておく必要がありますので、$A2 とします。複合参照ですね。

範囲には、$A$6:$H$14 リストですね。これは絶対参照を設定しておきます。

そして、ポイントになる

列番号には、COLUMN関数をネストしていきます。


列番号のボックスをクリックして、
名前ボックスの▼をクリックして、COLUMN関数のダイアログボックスを表示しましょう。

表示されましたら、
VLOOKUP関数のダイアログボックスに戻りますので、
数式バーのVLOOKUPという文字をクリックすると、
VLOOKUP関数のダイアログボックスに戻ります。

列番号には、COLUMN() と入力されましたね。
今回は2という数字が欲しいわけです。

今、アクティブにしているセルはB列ですから、2が入ります。

もしずれているようでしたら、プラスマイナスしてください。

検索方法には、完全一致ですから、FALSE と入力します。

あとは、OKボタンをクリックしましょう。

新宿と表示されましたね。では、オートフィルハンドルを使って、数式をコピーしてみましょう。

では、A2の値を変えてみましょう。


変わりましたね。

このような方法もありますので、使いやす法で作ってみてはいかがでしょうか?