ExcelのVLOOKUP関数で想定外の値が返ってくる

 今すぐ使えるかんたんmini Excel 全関数事典 [Excel 2016/2013/2010/2007対応版]

はじめに

Excelで大量のデータから条件に合う商品の一覧などを作るときに、おそらく最もよく使われるのがVLOOKUP関数です。

 

そんなVLOOKUP関数で「なんか結果が変!」「全然思っているような結果ならない!」と悩んだことはありませんか?

 

何事もまずは説明書をきちんと読みましょう、というのが今回のお話。

 

結論

VLOOKUP(検索値, 範囲, 列番号, [検索の型])

[検索の型]は省略せずに FALSE を指定する。(省略すると「あいまい検索」になる)

 

経緯

私も仕事でよくExcelを使うのですが、ある時、VLOOKUP関数で明らかに一致しない値が返ってきてしまいました。

 

何度も確認しましたが、検索されるデータと検索条件には何の問題もない。

 

「おいおい、どーなってんだよ!コレ!」と若干イライラしながら、改めてMicrosoft公式サイトでVLOOKUP関数の説明をよく見てみる。

 

 

[検索の型]は、VLOOKUP を使用して検索値と完全に一致する値だけを検索するか、その近似値を含めて検索するかを指定する論理値です。

 

[検索の型]にTRUE を指定すると、左端列は数字または英字を基準に並べ替えられているものとみなされ、検索値に最も近い値が検索されます。

 

[検索の型]にFALSE を指定すると、左端列から検索値と完全に一致する値が検索されます。

 

[検索の型]を省略した場合は、TRUE が指定されたものとみなされます。

 

というわけで、[検索の型]を省略せずに FALSE を指定すると、明らかに一致しない値が返ってこなくなりました。めでたしめでたし。

 

まとめ

Microsoft公式サイトの説明だと若干分かりづらいですが、要するに「完全に一致する値が無い場合は、一つ前の値を最も近い値として返す」という動作になります。

 

例えば、検索されるデータを 1,3,5,7 として、検索値を 2 とすると、(完全に一致する値が無いので)一つ前の値である 1 が返ってきます。

 

って、そんな使い方をしたい人ってあんまりいないような気がするのですが。。

省略した場合の動作を逆(FALSE が指定されたものとする)にした方が、私には自然なように感じます。