【エクセル】VLOOKUP関数がうまくいかないっ!
こんにちは。いたをです。
今日はエクセルねたをお届けします。
エクセルを利用する上で覚えておきたい関数の一つに「VLOOKUP関数」があります。VLOOKUP関数はデータ検索を簡単に実装するための関数であり、利用頻度も多く非常に便利な関数です。
でも、「上手に使いこなせない」という方も多いのではないでしょうか。
VLOOKUP関数を一言でいうと、
別の表からデータを引っ張ってきたいときに使う関数
です。
表を縦方向に検索して特定のデータに対応する値を取り出します[VLOOKUP(ブイ・ルックアップ)とは、垂直(Vertical)方向に検索(Look Up)するという意味]。
商品の価格や在庫数などの情報の検索や、データ入力において入力漏れが無いことのチェックなどに利用します。
VLOOKUP関数は使い方が少々難しいため、慣れないとよくエラーが発生してしまうこともあるでしょう。
最も多いエラーは値が見つからないときに発生する「#N/A」(ノーアサイン)であり、たいていは検索値と検索範囲の指定を誤っていることが原因です。
また検索範囲の左端が検索のキーになるので、検索範囲の指定などをチェックしておきたいものです。
それでも、(検索値が存在していても)想定通りの結果が返ってこないことも珍しくありません。
例① 検索値はあってもエラーが返ってくる
早速出てきました! #N/Aエラー。
関数の式も出してみていますので考えてみましょうね。
検索値のところは、LEFT関数を用いて、左側から4文字抜き出しています。それを元表の中から探し出して、氏名を表示させたいわけです。
うーん、問題は何もなさそうですが・・・。
LEFT関数がなにか問題でも起こしている???
D列にLEFT関数での計算結果を出してみました。
戻り値はちゃんと4文字分抜き出してありますね。問題はなさそうです。
でも・・・・、
なにか気づきませんか?
コードはセルの右側に、LEFT関数の戻り値はセルの左側に貼り付いていますね。
LEFT関数の戻り値は実は「文字列」なんですね。数値になっていない!
と、いうことでVLOOKUP関数は、厳密に文字列と数値を区別しています。結果として元表にある数値を文字列で検索しようとするから、エラーが返ってくるわけです。
エラーの理由、おわかりいただけましたでしょうか?
めんどくせー!!
そんな声が聞こえてきそうですね(笑)。
でもしょうがない。なんとかしなければいけません。
文字列を数値に変えればいいんですね。
それでしたら、この関数はいかがでしょう?
VALUE関数
VALUE(バリュー)関数は文字列を数値に変換できる関数です。これをLEFT関数の前に組み込みましょう。
そうすればちゃんと氏名が出てきましたね。よかった、よかった。
ほかにもVALUE関数を使わずに、
LEFT関数の戻り値に✕1をしたり、+0をしたりする方法もあります。
文字列ですが計算式を組み込むことで、数値にしてしまおうという作戦です。
例② 担当者がいなくなったら○○になってしまう
今度は何の問題もなさそうに見えますが。
ハイ、今のところは大丈夫ですね。ちゃんとVLOOKUP関数で右の元表から氏名を抜き出しています。
ところが、春の人事異動でコード1010の佐藤さんがいなくなってしまいました。
VLOOKUP関数は0を返すんですね。氏名のところが0になってしまいました。
これでは困ります。0じゃなくて空欄を返したいんです!
そんなときは、このように式を書き換えてみます。
VLOOKUP関数の式の後ろに&演算子、そして空欄(””)を追加します。
&演算子は文字列と文字列を結合するという意味がありますので、空欄を追加して、何も入っていない空欄の文字列にしますよ~ということなんです。
これで0ではなく空欄に変わっているはずですね。
まとめ
いかがでしたでしょうか。
今日はVLOOKUP関数のエラーについていろいろ考えてきました。
まぁ、大抵のエラーは検索値が範囲に存在しないことがほとんどです。#N/Aエラーが表示されても慌てずに状況確認をしてみましょう。
また、セル参照のずれもエラーの原因になりがちです。絶対参照で指定を習慣づけしましょう。
実務のゲンバでは、いろんなことが起こってきます。
エラーに負けるな!
それではまた。
***
この記事が参加している募集
さいごまで読んでいただき、まことにありがとうございました。 もし面白い記事だったなぁと思っていただけたら、是非!ぜひ「スキ」や「シェア」をお願いします。 戴いたサポートは、皆様の応援に使わせていただき、時々モチベーションUPのためのビール代に使わせてくださいまし。