VLOOKUPについて
Excelで便利といわれる機能に
VLOOKUPがある。
これは
検索ワードを決めて
調べたい検索範囲を対象として(他のシートも選択可)
その検索ワードと一致する行の好きなデータを取得できる。
ところが
この便利な機能を活用しようとしたところ
何度もつまってしまった。
そこで
うまく検索できない原因についてまとめる。
ちなみに
VLOOKUPを使っていてうまくいかないときによくみかけるのが
「N/A」だ。
これは「No Assign」(ノー・アサイン)の頭文字で
検索ワードでうまくヒットしないときにでてくるやつだ。
原因その① 検索範囲の左列に検索ワードが含まれていない
A B C
1 みかん 100円 愛媛
2 りんご 200円 青森
3 桃 250円 山梨
このようなデータがある場合に
「青森」や「愛媛」を
VLOOKUP関数の検索ワードにして
果物データをとろうとした場合
一致するデータは存在しないことになる。
原因は
検索範囲の中の
一番左の列(上記A列)に検索ワードが含まれていないと
一致するデータはありませんと返されることになるからだ。
これは
エクセルが対象となる範囲からデータを探す場合
一番左の列だけしか調べない場合があるからだ。
そして
VLOOKUP関数も一番左の列だけしか調べてくれない。
そのため
対処法としては
検索ワードは一番左の列(上記A列)に挿入した上で
VLOOKUPを使えばいい。
A B C
1 愛媛 みかん 100円
2 青森 りんご 200円
3 山梨 桃 250円
こんな感じで
検索ワード「青森」とかをA列にすればいい。
原因その② 検索ワードに一致するデータが何回かでてくる
検索範囲内に
検索ワードに一致するデータが複数ある場合
最初に一致したデータの行しか対象にできない。
A B C
1 みかん 100円 愛媛
2 りんご 200円 青森
3 桃 250円 山梨
4 みかん 120円 和歌山
この場合
「みかん」というキーワードで検索した場合
一番最初にヒットする1行目の「みかん」データの行しか
対象にならない。
そのため
対処法としては
検索ワードをユニーク(固有)のものにする。
あるいは
検索範囲をあらかじめ絞っておいて
その範囲からデータを取得する。
あるいは
複数ある検索ワードに(1)とかつけてユニークなものにする。
「みかん(1)」、「みかん(2)」
のように。
原因その③ 数字の半角と全角の区別
vlookupでは
数字の半角と全角を区別している。
そのため
検索ワードは数字の半角にしているが
検索対象の数字が全角だとヒットしない。
特に
文字と数字の組み合わせの場合とかに
その数字が半角か全角か気づきにくいので
ヒットしなかったりするので注意。
原因その④ 検索方法をFALSE(0)にしていない
使い方にもよるが
文字列を検索ワードにする場合
VLOOKUPの引数の4番目は
「FALSE」(もしくは「0」)
にしないとうまくいかない。
これも気を付ける。
ただし
通常は検索ワードを固有の数字にして使用する場合が
多いのかもしれない。
そうなると
この点はそこまで気にしなくていいか。
おまけ① VLOOKUPでよく使う引数2つ
VLOOKUPの検索ワードを
あるデータの一部分だけ一致するようにしたい場合
*を使う。
VLOOKUP("*"&$B3&"*",・・・)
こんな感じにすれば
B3に部分一致するデータを引っ張ってこれる。
また
引っ張ってくるデータについては
column()を使うと便利。
これをVLOOKUP関数の第3引数にすれば
列が動くごとに
その列に対応したデータをもってこれるからだ。
おまけ② 絶対参照
VLOOKUPを使っていると
絶対参照と相対参照が
特に重要になってくる。
検索ワードについて
コードを縦にコピーする場合
行の値が1ずつ増えていくのが理想なので
検索ワードの行の数字は相対参照がいい。
他方
コードを横にコピーする場合
列がずれるとえらいことになるので
検索ワードの列のアルファベットは絶対参照がいい。
検索範囲について
検索範囲は
通常固定で使うので
絶対参照にする。