
上図のように右の商品コードが左の一覧に存在するのかを確認したいとき、
あるいは商品コードに対応した商品名を抽出したいと思う場面があるかと思います。
そんなときに使えるのがVLOOKUP関数です。
この記事では、VLOOKUP関数の使い方や使用例をわかりやすく解説し、エラー対策も紹介いたします。
-著者情報-
名前:Utatane
Excel使用歴:15年以上
ひとこと:初心者だった当時に戻った気持ちになって解説いたします
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
実演パソコンのスペック(ソフトやバージョンによっては、表示や結果が異なる場合があります)
- OS:Windows11 Home 64bit
- Excel:Microsoft Office Home and Business 2021
【Excel】VLOOKUP関数の使い方
VLOOKUPとは、Excel内の特定の列を検索することができる関数です。
指定の値と一致するセルを確認したり、隣の列の値を抽出したりすることができます。
基本構文(引数・返り値)
VLOOKUP関数の基本構文は以下の通りです。
▼VLOOKUP関数
=VLOOKUP(検索ワード, 検索範囲, 返す値の列番号, 検索方法)
引数に「検索ワード」「検索範囲」「返す値の列番号」「検索方法」を指定します。
引数や返り値については、下記記事をご参考ください。
- 検索ワード:検索する値。文字列を直接入力するか、セルや数式・関数などで指定。
- 検索範囲:検索ワードを検索するセル範囲を指定。「A:D」など、一列単位でもOK。
- 返す値の列番号:数値を直接入力するか、セルや数式・関数などで指定
- 検索方法:0(またはFALSE)なら完全一致、1(またはTRUE)なら近似一致
(近似一致は仕組みが難しいため、基本的に完全一致を使うのが無難)
検索範囲から検索ワードを検索し、見つかったら返す値の列番号に応じた値が返り値となります。
文章で説明してもピンと来ないと思いますので、具体例を見ていきましょう。
指定のワードを検索

上図のようなデータがあります。
A0003という商品コードがA~B列の一覧に存在するのかを検索してみましょう。
E2セルに下記の通り入力します。
=VLOOKUP("A0003", A:B, 1, 0)
セル指定や列指定は、直接入力してもいいですが、セルや列を選択して指定(参照)してもいいです。
詳しくは下記記事をご参照ください。
検索ワードを文字列で指定する場合は、「”(ダブルクォーテーション)」で囲う必要があります。
検索ワードを文字列ではなく、下記のようにセル参照で指定することもできます。
=VLOOKUP(D2, A:B, 1, 0)
この場合も結果は同じです。
また、検索ワードをセルを参照で指定する場合は、「”」で囲う必要はありません。
結果は下図のとおりです。

商品コード「A0003」は商品一覧に存在するため、検索ワードがそのまま返り値として返され、表示されました。
では一覧に無い「A0009」で試してみましょう。

「A0009」は一覧に無いため、エラーが返ってきました。
検索結果が見つからなかった場合は、「#N/A」と表示されることを覚えておきましょう。
【数値と文字列の違いに注意】

上図を見てみると、あきらかにコード「2」が一覧に存在するはずなのにエラーが出てしまっています。
これは型違い(数値と文字列)による不一致と判定されたためのエラーです。
よく見ると右側の検索ワードの「2」は左上に三角印があるため文字列なのに対し、一覧の商品コードは数値です。
数値・文字列を統一させるか、「VALUE関数(数値に変換)」などを使って対処しましょう。

検索ワードに対応した項目を抽出
前項では商品コードそのものを検索しましたが、今度は商品コードに対応した商品を抽出してみましょう。
元データは前項と同じです。

では、E2に下記の通り入力してみましょう。
=VLOOKUP("A0003". A:B, 2, 0)
または
=VLOOKUP(D2. A:B, 2, 0)
前項と比べて、返す値の列番号が1→2に変わっただけです。
結果を見てみましょう。

「A0003」に対応した商品「せんべい」が返され、セルに表示されました。
これは、返す値の列番号を「2」にしたため、2番目であるB列の値が返されたということです。
返す値の列番号を「3」にすると3列目であるC列の値が返されるのですが、
今回は検索範囲をA~B列で指定しているため、範囲を超えたC列は返されず、エラーとなります。

別シート・別ブックをまたいで使用する
VLOOKUP関数は別シートや別ブックをまたいで使用することができます。
下図は検索範囲に別シートのA~B列を指定した例です。

やり方は検索範囲指定のときにシート名(今回は「Sheet2」)+「!」を入力するか、
下部のシートタブをクリックしてから検索範囲を指定します。
「!」までがシート名ですよという目印です。
別ブックを参照する場合もほぼ同じです。
(別ブックを選択 → シートタブを選択 → 検索範囲を選択)

[]内が別ブックのファイル名ですよという目印です。
別ブックの検索範囲を指定した場合は、自動的に絶対参照になります。
参照については下記記事をご参考ください。
複数の値を一括で検索
ここまでなら、Excelの検索機能で代用できるのでは?と思うかもしれません。
その通りです。
しかしながら、VLOOKUP関数の魅力はここからです。
下図のように複数の値を検索したい場合があったとします。

検索機能で1つ1つ確認するのは大変です。
では、E2セルを下へコピーしてみましょう。

他の値も結果が表示されました。

このように、複数の値も一瞬で検索できるのが、VLOOKUP関数の魅力です。
VLOOKUP使用時によくあるエラー
#N/A
VLOOKUP関数を使用したセルに「#N/A」が表示された場合は、検索ワードが見つからなかったことを示しています。明らかに存在しているのにエラーが出る場合は、数値と文字列などの型違いが原因かもしれません。
VALUE関数を使うなどして、型を一致させましょう。
目に見えないスペースが入っていて検索ワードと一致しないと判断されている場合もあります。
検索ワードや一覧データのセル内をよく調べてみましょう。
検索ワードが見つからなくてもいいから、エラーを表示させたくない場合は、IFERROR関数を使うことで実現できます。

IFERROR関数は、結果がエラーだった場合の処置を指定できます。
今回は、セルに「見つかりません」と表示させてみました。
#REF!
VLOOKUP関数を使用したセルに「#REF!」が表示された場合は、検索範囲を超える列の値を返そうとしたことが原因です。
例えば「検索範囲」が「A:B」で「返す値の列番号」が「3」なら検索範囲をオーバーしています。
「検索範囲」と「返す値の列番号」をよく確認してみましょう。
VLOOKUP使用時の注意点
左端からしか検索できない
検索ワードを探す列は、検索範囲の一番左側で指定する必要があります。
例えばB列の中から検索ワードを探したいのに、範囲をA~C列にしてしまうと、見つけることができません。
列の追加・削除に弱い
途中で検索範囲内に列が追加されたり削除されたりすると、抽出項目がズレてしまいます。
これにより、全く違う項目が抽出されたり、エラーが起こる場合があります。
一応XLOOKUP関数で対処は可能ですが、検索範囲の列は追加・削除しないようにしましょう。
重複する値は一番上のものが返される

上図のように検索する値が複数存在する場合は、一番上のものが返されます。
重複する項目がある場合は、予期せぬ間違いが起こる場合がありますので注意しましょう。
今回の場合は、「商品」と「サイズ」を「&(アンド)」で結合した列を新たに作ることで解決します。

VLOOKUP関数の「検索ワード」も同様に「&」で「せんべい大」を指定してください。

HLOOKUP・XLOOKUPとの違い
よく似た関数に「HLOOKUP」と「XLOOKUP」があります。
VLOOKUPとこれらの違いについて解説いたします。
HLOOKUP
「HLOOKUP」は、「VLOOKUP」の行と列が入れ替わった関数だと思ってください。
VLOOKUPは、1列目の上から検索が始まり、見つかったら2列目の値などを返すのに対し、
HLOOKUPは、1行目の左から検索が始まり、見つかったら2行目の値などを返します。

上図のような、行と列が逆のデータに対して検索を行う場合に有効です。
XLOOKUP
「VLOOKUP」は「検索範囲」と「返す値の列番号」を指定するのに対し、
「XLOOKUP」は「検索範囲(1列)」と「返す値の範囲(1列)」を指定します。
例えば、「検索範囲」をA列、「返す値の範囲」をC列という具合に指定することができます。
これにより、返す値の列番号を数えたりしなくていい上に、列の追加や削除を行っても問題ありません。

最後に
ExcelのVLOOKUP関数について解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!