VLOOKUP関数 ● 表を縦方向に検索してデータを取り出す

Excelの VLOOKUP(ブイ・ルックアップ)関数の使い方を紹介します。

VLOOKUP関数を使うと、表を検索して必要なデータを取り出せます。商品リストから商品IDが「XXXX」の価格を取り出したり、送料表からサイズが「XX」の送料を調べたりと、とても便利です。

スポンサーリンク

書式

表を縦方向に検索してデータを取り出す
=VLOOKUP(検索値, 範囲, 列番号, [検索の型])

範囲]の 1列目から[検索値]を探し、見つかった行の[列番号]目にあるデータを返します。[検索の型]に応じて、完全一致検索、または近似一致検索が行われます。

引数

引数 説明
検索値 検索する値を指定する。全角文字と半角文字は区別されるが、アルファベットの大文字と小文字は区別されない。
範囲 検索する表のセル範囲を指定する。[検索値]を探す列が 1列目にくるように指定すること。
列番号 値を取り出す列を指定する。範囲の 1列目から 1、2、3……と数える。
検索の型 完全一致で検索するか、近似一致で検索するかを 表A の値で指定する。

表A 引数[検索の型]の設定値

設定値 説明
TRUE または省略 近似一致で検索する。[検索値]が見つからない場合、[検索値]未満の最大値が検索される。[範囲]の 1列目を昇順(小さい順)で並べておく必要がある。
FALSE 完全一致で検索する。[検索値]が見つからない場合、エラー値「#N/A」が返される。[範囲]の 1列目は昇順(小さい順)でなくてもよい。

メモ

VLOOKUP関数は「縦方向に」検索する
「VLOOKUP」という関数名は、「垂直の」という意味の「Vertical」、「調べる」という意味の「LOOK UP」の組み合わせです。[検索値]を探すときに、[範囲]の1列目を縦方向に検索することに由来します。
ちなみにExcelには、[範囲]の1行目を横方向(Horizontal:水平の)に検索する HLOOKUP関数も用意されています。また、Excel 2021の新関数である XLOOKUP関数なら、縦横どちらの方向にも検索が可能です。

使用例1…商品リストから商品ID を検索して商品名と単価を取り出す【完全一致検索】

図1の商品リストから「G-102」という商品IDを検索して、商品名と単価を取り出します。

VLOOKUP関数の引数[検索値]に「G-102」を入力したセルB2、[範囲]に商品リストのデータが入力されているセルD3~F8、[列番号]に商品名の列「2」を指定すると、該当の商品名「ジェルG詰替」が取り出されます。ここでは完全一致検索(「G-102」と全く同じデータを検索すること)を行うので、[検索の型]に「FALSE」を指定しました。

セルB3のVLOOKUP関数の[列番号]の「2」を「3」に変えれば、単価が求められます。

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

セルB3 | =VLOOKUP(B2,D3:F8,2,FALSE)

セルB4 | =VLOOKUP(B2,D3:F8,3,FALSE)

図1 セルB3とB4にVLOOKUP関数を入力して、商品IDが「G-102」の商品名と単価を商品リストから取り出す。セルB4には[右揃え]と[通貨表示形式]を設定した。

なお、図1では完全一致検索を行ったので、[検索値]が見つからない場合は図2のようにエラー値「#N/A」が返されます。

図2 商品リストに存在しない商品ID「xyz」をセルB2に入力すると、VLOOKUP関数の結果はエラー値「#N/A」になる。

メモ

コード番号を検索する場合は必ず「FALSE」を指定する
「品番から商品情報を調べる」「社員番号から社員情報を調べる」という具合に、何らかのコード番号を[検索値]としてVLOOKUP関数で表引きする場合は、必ず引数[検索の型]に「FALSE」を指定しましょう。そうすれば、コード番号の入力間違いのときに図2のように「#N/A」が返されるので、ひと目で誤りに気付けるメリットがあります。
検索の型]に「TRUE」を指定した場合は近似検索が行われ、間違ったコード番号を入力したときに間違った商品情報が表示されてしまう恐れがあるので注意してください。

メモ

大文字/小文字と全角/半角
VLOOKUP関数による検索では、アルファベットの大文字と小文字は区別されません。全角文字と半角文字は区別されます。例えば図1の例では、[検索値]に半角の「G-102」「g-102」を指定した場合は「ジェルG詰替」が取り出されますが、全角の「G-102」「g-102」を指定した場合は「#N/A」エラーになります。

メモ

見積書や請求書でコード番号未入力による「#N/A」エラーを防ぐには
検索値]のセルが未入力の場合もエラー値「#N/A」が返されます。見積書や請求書などのひな型を作る際に、あらかじめ明細欄にVLOOKUP関数を入力しておくことがあります。しかし、商品IDが未入力だとセルにエラー値「#N/A」が表示されてしまいます。IFERROR関数を併用すると、そのようなエラーを非表示にできます。詳しくは「検索値が未入力のときのVLOOKUP関数の「#N/A」エラー対策」を参照してください。
なお、Excel 2021の新関数である XLOOKUP関数は[検索値]が見つからない場合の対処を指定する引数を持つので、IFERROR関数を使わなくても「#N/A」エラーを防げます。

使用例2…「○以上△未満」の条件で検索して表からデータを取り出す【近似一致検索】

図3の送料表から、サイズが「90」の場合の送料を求めます。

VLOOKUP関数の引数[検索値]に「90」を入力したセルB2、[範囲]に送料のデータが入力されているセルD3~F7、[列番号]に送料の列「3」を指定します。近似一致検索を行うので、[範囲]の 1列目のデータを小さい順に入力しておき、[検索の型]に「TRUE」を指定します。

「90」のサイズに対応する送料「800」が求められます。[範囲]の 1列目に「90」に完全一致するデータはありませんが、ここでは近似一致検索を行うので、「90」未満の最大値である「50」に対応する送料の「800」が求められるのです。

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

セルB3 | =VLOOKUP(B2,D3:F7,3,TRUE)

図3 セルB3にVLOOKUP関数を入力して、サイズが「90」の場合の送料を求める。セルB3には[通貨表示形式]を設定してある。

なお、セルB2に「200」以上の数値を入力すると、セルB3に「配送不可」が表示されます。また、セルB2に文字や負数を入力した場合は、エラー値「#N/A」が表示されます。

メモ

「○以上△未満」の条件で表引きできる
図3の送料表は、「0以上50未満」の送料は「600円」、「50以上100未満」の送料は「800円」……、「200以上」は「配送不可」と読みます。近似一致検索では[検索値]未満の最大値が検索されますが、「○以上△未満」の条件で表引きできる、と考えるとわかりやすいと思います。送料表の 1列目は数値の小さい順で並べておく必要があります。

そのほかの使用例

VLOOKUP関数の使用例は、下記でも紹介しています。

スポンサーリンク

関連記事