今回はExcelを使用するうえで覚えて損のない関数,「VLOOKUP」のご紹介です。
当方も本関数をよく使用して資料作成しています。
ぜひ理解して,資料作成に役立てていきましょう!
前提知識
関数

Excelに備わっている数式や命令文のことです。
全部で約500種類あり,複数セルに記載してある数値の合計値算出や特定データの抽出等,様々な用途で使用することができます。
人手では何時間も掛かるであろう複雑な計算も,Excelの関数を使用することで瞬時に求めることが可能です。

資料作成において,Excelの使い勝手は抜群です!
VLOOKUP


表や指定した範囲内にある,条件と合致するデータを抽出する関数です。
類似関数に以下があります。
- VLOOKUP ←今回の主題
- HLOOKUP
- XLOOKUP
検索方法にそれぞれ違いがあるものの,条件合致のデータを抽出する意味では同じ関数です。
VLOOKUPは,検索値に対して右方向へデータを検索して抽出します。
関数の使い方
構文
VLOOKUP関数の構文は以下の通りです。
=VLOOKUP([検索値],[範囲],[列番号],[検索方法])
今回は野菜のデータを抽出する例を使用して説明します。


C12セル(「商品番号」)に商品番号を入力して,D12(「商品名」)~G12セル(「備考」)へ商品番号に応じたデータを抽出してみましょう。
入力前


入力後


検索値
検索の要となる値を設定します。
セルへ入力した値を検索条件に設定することで,使い勝手が良くなるでしょう。
今回は複合参照で「$C12」を入力します。


範囲
検索をする範囲を指定します。
今回はB2セル~G9セルにある表内から検索したいため,絶対参照にて「$B$2:$G$9」としたいところですが,「$C$2:$G$9」を指定しています。
理由は後述します。


列番号
先の「範囲」内において,先頭の列から数えた抽出したいデータの列番号を指定します。
関数を入力しているD12セルでは,「範囲」($C$2:$G$9)内の表にある「商品名」(D2~D9の範囲)を抽出します。
「商品名」は先頭の「商品番号」列(C列)から数えて2番目の列(D列)にあるため,「2」を指定します。


検索条件
検索するうえでの条件を指定します。
なお,本項目は省略しても問題ありません。
指定するうえでは以下のどちらかを指定します。
- TRUE:近似一致
「検索値」と近い値のデータを抽出する。
指定を省略した場合は「TRUE」として検索する。
本検索条件を指定する場合,「範囲内」の先頭列は昇順で並び替える必要がある。 - FALSE:完全一致
「検索値」と完全に一致したデータを抽出する。



どっちが良いんですか?



特別な事情がない限り,「FALSE」がおすすめだよ!
「TRUE」の場合は範囲内にある表等を事前に加工(昇順並び替え等)しておく必要もあるため,特に何も考えなくて良い「FALSE」が適切でしょう。


実証
早速,「商品番号」(C12セル)へ値を入力して確認してみましょう。
入力前


入力後


「商品番号」(「N714」)に対する「商品名」(「トマト」)を抽出することができました!
では,他の類似関数との違いを把握する意味も兼ねて,VLOOKUPの挙動を確認していきましょう。
①「範囲」内における先頭列での「検索値」検索
まずはVLOOKUPで指定した「範囲」にある先頭列から,「検索値」と完全一致(「検索条件」に「FALSE」を指定)するセルを検索します。
先に入力した「N714」は,C6セルにあります。


②指定した列番号のデータ抽出
「検索値」のあったセル(C6)から右方向の列番号(2)内にあるデータを抽出して出力します。
今回は2列目を指定したため,2列目にある「トマト」が結果として返ってきます。


残りのセル(E12~G12)にも「列番号」を変えて同じように数式を入力することで,「検索値」に応じた適切なデータを抽出することができます。


最終状態
最終的に,B11~G12の範囲にある表には以下が入力してある状態となっています。
# | 商品番号 | 商品名 | 単価(円) | 在庫数(個) | 備考 |
---|---|---|---|---|---|
=ROW()-ROW($B$11) | (関数無し) | =VLOOKUP ($C12,$C$2:$G$9,2,FALSE) | =VLOOKUP ($C12,$C$2:$G$9,3,FALSE) | =VLOOKUP ($C12,$C$2:$G$9,4,FALSE) | =VLOOKUP ($C12,$C$2:$G$9,5,FALSE) |
注意点
VLOOKUPを使用するうえでは以下の注意点があります。
- 検索値として指定する列を必ず1列目にする。
- 範囲に指定した先頭の列から右方向にしか検索できない。
- 検索値が見つからなかった場合はエラー(#N/A1)になる。
- 抽出したデータが空欄だった場合は「0」と表示が出る。
①検索値の列
設定する「範囲」において,「検索値」を含む列は必ず1列目にする必要があります。
「検索値」を「範囲」の1列目から検索する仕様となっているためです。
また,仮に検索値が複数ある場合,最も上の行にあるデータを抽出します。
先頭の列に入力する値は一意(値の重複が無い)となるようにする。
②検索方向
データの抽出において,先頭の列から右方向への検索しかできません。
もし左方向に抽出したいデータがある場合,抽出したいデータのある列を先頭の列より右側へ持っていきましょう。
もしくは,他の関数(「INDEX」&「MATCH」や「XLOOKUP」,別途紹介予定)を使用しても可能です。
③検索値の該当なし
「検索値」が見つからなかった場合はエラー(#N/A)となります。
「検索値」に何も設定していない(空欄)状態であっても同じです。
もし何も設定していない状態でのエラー表示を回避したい場合は,「IF」関数を使用して何も設定していない時の条件を設定するか,「IFERROR」関数を使用することで回避可能です。(別途紹介します。)


④抽出データが空欄
抽出したデータが空欄(入力値が何もない状態)だった場合,「0」と表示が出ます。


もし空欄として出力したい場合は,以下のように設定しておくと良いでしょう。
=VLOOKUP([検索値],[範囲],[列番号],[検索方法])&””
「VLOOKUP」の結果に加えて空文字を設定することで,「0」の表示を回避しています。
まとめ
今回はExcelにある関数の一種,「VLOOKUP」について説明しました。
使用するうえでの注意事項はあるものの,非常に使い勝手の良い関数かと思います。
今回使用した例のように,データ数が少なければ目視で確認しても良いかもしれません。
しかし,データ数が膨大であったり,将来的にデータが変化する可能性も踏まえると,関数を使用して抽出する方が賢明と言えるでしょう。
関数を駆使して,様々な資料作成に役立ててください!
- 「not applicable」(該当なし)または「not available」(利用不可)の略称。 ↩︎