mhlyc -practice

ソフトウェアテストと品質保証がメインテーマです。

VLOOKUP関数で、何やってもN/Aになっちゃうときの話

皆さんエクセルは普段使っていますか?

エクセルの集計関数には色々な種類があります。今日はVLOOKUP関数についての話です。
 

 

VLOOKUP関数って何?

指定した範囲から、検索条件に合ったデータを取ってくる関数です。
使い方や用途についてはgoogle先生がたくさん情報を持っているので割愛。
 

なぜかN/Aになっちゃうときがある

本題はこちら。

vlookup関数を使うと、N/A(計算できませんでした、的な値)になってしまう時があるんです。その時のハマりパターンを一つ書いておきます。

 

VLOOKUP関数のサーチは左→右の順

VLOOKUP関数の式は以下のようになっています。

=VLOOKUP(検索値,範囲, 列番号,検索方法の指定)

ここで気にしなくてはいけないのが、

検索する値の列が、取り出したい値の列よりも左にないといけないんです。

例えばこの例。

商品表に旧IDを割り振りたい。けれど、今は新しいIDしか商品表にない。なので、新旧のID対応表から新IDをキーにして旧IDを取り出して表示したい。という例です。

 

f:id:mhlyc:20151130131418p:plain

 

この時、この式を書くことでうまく目的のデータが取れます。

  

=VLOOKUP(C5, $H$4:$I$9, 2, FALSE)

 

しかし、新旧ID対応表がこうなっていた場合(旧IDと新IDの列が逆)

f:id:mhlyc:20151130131536p:plain

 

上記の式だと取れません。

 

=VLOOKUP(C5, $F$4:$G$9, 1, FALSE)

にしたらいいんじゃね?と思いがちですがこれは罠です。

結局このような場合は、新ID(検索値)が旧ID(表示したい値)より左に来るように票を変形する必要があります。正確には、検索値が範囲の一番左の列に来るようにしなければなりません。式には範囲としか書いていないので誤解しがちですが、実際には範囲とキーとなる列(一番左の列)を両方一度に指定しているのです。なので、検索したい値の入っている列が一番左に来るように範囲を指定してください。

 

VLOOKUP関数は便利

VLOOKUP関数はとても便利です。大学時代のアルバイトでは、VLOOKUP関数を使って顧客リストから顧客の情報を引っ張ってきて、帳票印刷ができるようにしたことがあります。

もし参考になりましたら幸いです!