KNIME・EXCEL倉庫

KNIMEやEXCELマクロの備忘録です。

【EXCEL】vlookupがたまに間違える件について

EXCEL上で表を作成した際に、検索関数であるvlookupを使うことがある。

・vlookupで表を検索すると、なぜかたまに間違えることがある(下図)。

f:id:choron81:20210814235737p:plain

・会員番号1006は田中六郎氏であっている。一方で、会員番号1005は存在せず、氏名を返してはいけないのだが、田中四郎氏が返ってきている。お帰り、四郎。

・この場合は、vlookup関数に4つ目の引数を与えると良いらしい(下図)。

f:id:choron81:20210815000250p:plain

・TRUEだと、近似検索なので、ぴったり合うキーがない場合、それっぽい情報が入っているセルをヒットとして判別する。一方で、FALSEにすると完全一致検索なので、「会員番号1005なんて表中に出てこないよ!」とエラーを返してくれる。

・ちなみに、この状態でキーが重複している1007番を検索すると、TRUEとFLASEで戻り値が異なる(下図)。

f:id:choron81:20210815001926p:plain

・そもそもキーに誤りがあることが悪いのだが、しれっと戻り値を返してしまう。

・「何かエラーを返してくれるんじゃないか」と期待していると、痛い目を見る。

 

・あと、キーが順番になっていない場合にも、TRUEだと変な挙動をする(下図)。

f:id:choron81:20210815002303p:plain

・会員番号1006の田中六郎氏が登録されているにも拘わらず、TRUEでは三郎氏が返ってきてしまっている。

・まとめると、vlookup関数はデフォルト(近似検索)で使うべきではなく、第4の引数にFALSEを指定した方が良い。あと、表がダメだとエラーではなく適当にそれっぽい戻り値を返してくるので、注意が必要。

 

終わり。