VLOOKUP関数とは、指定範囲を縦方向に検索し、該当する行の指定列の値を返す関数です。
Excelで最もよく使う関数ランキングでも、常にTOP3に君臨しており、なくてはならない必須関数とも言えるでしょう。
ただし、この関数について言葉で説明されると少し分かりにくいのが難点です。
この記事では、いくつかの例を参考にVLOOKUP関数の基本的な使用方法をご説明します。
一度ご自分で使ってみれば理解がより一層深まるはずです。
ウチもTOPランクの黒豚になりたいわ
それって味のランクじゃないの・・・?
関数構文
VLOOKUP関数の仕様です。
=VLOOKUP(検索値, 範囲, 列番号, [検索方法])引数 | 説明 |
---|---|
①検索値 | 検索する値 |
②範囲 | 検索対象となる列と、返す値の列を含めた範囲を指定します。 検索対象となる列は左端に指定する必要があります。 例)「B1:D10」と指定した場合、検索対象範囲は「B1:B10」となります。 |
③列番号 | ②範囲から数えて何列目の値を返すかを数値で指定します。 例)②の範囲で「B1:D10」と指定し、D列の値を返す場合は、 B列から数えて3番目となるので、「3」を指定します。 |
④検索方法 | 近似一致検索をする場合は「TRUE」、完全一致検索をする場合は「FALSE」を指定します。 省略可ですが、既定値は「TRUE」となっています。 実務では完全一致検索をする場合が多いので、基本FALSEを指定します。 |
一つずつ引数の使い方を解説していきます。
①検索値
「商品ID=S002」に紐づく商品名「カツ丼」を取得したいので、第1引数の検索値に「B13」セルを指定します。
②範囲
- 検索対象となる列は商品IDなので、「A3:A5」を検索範囲とします。
- 表示したい値は商品名なので、「B3:B5」を範囲とします。
- 上記2つを合わせた範囲を第2引数に指定します。(A3:A5とB3:B5を合わせた範囲である、「A3:B5」を指定)
注意
範囲を2つ指定する必要がある点が、ややこしくする原因の一つと思われます。
絶対参照($A$3:$B$5)しているのは、後でコピーしてもズレない様にするためです。
③列番号
返す値を「②範囲」で指定した範囲からの、相対的な列番号で指定します。
取得したい商品名は2列目だから2と指定しているわけではありません。
「②範囲」で指定した「A3:B5」の範囲の2列目だから「2」と指定しているのです。
もし「②範囲」で「B1:D10」と指定し、D列の値を返す場合は、A、B、C、Dの4番目だから「4」ではなく、B、C、Dの「3」番目だから「3」と指定する必要があります。
④検索方法
TRUEを指定(近似一致)
既定値TRUEの近似一致検索をした場合、「検索値を超えない最大値」を返します。
上図では「ブヒコ」の点数は59点であり、60点の成績「B」が一番近いにもかかわらず、返ってきた値は「50」点の「C」となっています。
近似という言葉から、最も近い値という印象を得ますが、検索値を超えないという制限があるためです。
「ピヨコ」の場合に至っては、検索範囲の最低値「20」より下回る数値なので、エラー(Not Applicable:該当なし)になっています。
これを解消するには、
検索範囲に点数「0」、成績「F」を追加すればOKです。(参照範囲もC7→C8へ、1行増やす)
「◯◯以上、△△未満」の値を取得したいという場合においてのみ、近似一致を使用すれば良いでしょう。
注意
近似一致を使用する場合、参照する範囲は、昇順でソートされている必要があります。
例として、先程のデータを昇順ではなく、降順にしてみると、
期待する値にはなりません。
これはVLOOKUP関数が、上から順に検索していく仕組みのためです。
FALSEを指定(完全一致)
FALSEの完全一致検索を指定して、値が見つかった場合はそのまま表示されますが、見つからなかった場合は「#N/Aエラー」になります。
エラー表示が不要の場合は、=IFERROR( VLOOKUP( B13, $A$3:$B$5, 2, FALSE ), "" ) のようにして、=IFERROR()関数で囲んであげれば良いでしょう。
まとめ
=VLOOKUP()関数を使用する際には、何かと注意事項があり、初めて使う時はややこしく感じるかもしれません。
ですが使用頻度が上がるにつれ、無くてはならない必須の関数だと思うようになるはずです。
また、=VLOOKUP()関数に似た、=HLOOKUP()関数というものがありますが、こちらは検索方向が横になっただけで仕組みは同じです。
あまり見かけることはありませんが、存在くらいは頭の片隅に置いておくと、いつか役に立つときがくるかもしれません。
自分でコピペした方が早いんちゃうか?
簡潔に説明するため、
データ数を少なくしているからそう思うだけだよ。
普通は何千、何万件とデータがあるため、
手作業でやると必ずミスしてしまうよ。