見出し画像

【エクセル】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エラーが表示されても慌てずに状況確認をしてみましょう。

また、セル参照のずれもエラーの原因になりがちです。絶対参照で指定を習慣づけしましょう。

実務のゲンバでは、いろんなことが起こってきます。

エラーに負けるな!
それではまた。

***


この記事が参加している募集

#最近の学び

181,718件

さいごまで読んでいただき、まことにありがとうございました。 もし面白い記事だったなぁと思っていただけたら、是非!ぜひ「スキ」や「シェア」をお願いします。 戴いたサポートは、皆様の応援に使わせていただき、時々モチベーションUPのためのビール代に使わせてくださいまし。