Excelでデータを扱うときに便利な関数のひとつであるVLOOKUP関数。指定した値に一致するデータを別の列から抽出(検索)できます。たとえば、社員番号から名前や部署を調べたり、商品コードから価格や在庫を確認したりする際によく利用されます。

この記事では、VLOOKUP関数の基本的な使い方から応用的な使い方や、VLOOKUP関数でよく起こるエラー値(#N/A! / #REF!)の原因と回避方法も紹介します。

VLOOKUP関数とは?データ抽出に便利な関数

VLOOKUP関数は、「Vertical Look Up」、つまり「縦方向に検索し、一致した値と同じ行の特定の値を返す」という意味を表わしています。VLOOKUP関数は、以下のような書式で使用します。

ExcelのVLOOKUP関数でデータ抽出(検索)する方法とは?エラー回避の方法も
(画像=VLOOKUP関数を使うことで、出したい情報を簡単に検索できます。たとえば商品リストから指定した商品コードの商品名や価格を取り出したり、社員名簿から社員番号や所定の入社時期などの条件に合致する社員を取り出す際に便利です、『オトナライフ』より 引用)

・検索キー:検索したいデータに対応する値。たとえば、「A2」などです。
・検索範囲:検索対象となるセル範囲を指定します。たとえば、「B2:F10」や「Sheet2!A1:D20」などです。
・列番号:検索範囲内で抽出したい列の番号を指定します。左端の列が1番目となります。
・範囲参照:検索キーが完全一致する場合は「FALSE」または「0」、近似一致する場合は「TRUE」または「1」を指定します。

VLOOKUP関数の基本的な使い方

VLOOKUP関数の基本的な使い方について解説します。

書式と引数の説明

VLOOKUP関数の書式と引数については前項で説明しましたが、ここでは具体的な使用例を見てみましょう。 以下は社員番号から名前や部署を管理している表です。

ExcelのVLOOKUP関数でデータ抽出(検索)する方法とは?エラー回避の方法も
(画像=社内で社員の情報を管理するために、よくExcelの表が使われます、『オトナライフ』より 引用)

この表から社員番号1003の名前を抽出したい場合は、以下のようにVLOOKUP関数を使います。

=VLOOKUP(1003,A2:C5,2,FALSE)

この場合、

・検索キー:1003
・検索範囲:A2:C5
・列番号:2
・範囲参照:FALSE

という引数になります。

ExcelのVLOOKUP関数でデータ抽出(検索)する方法とは?エラー回避の方法も
(画像=赤枠の中の何列目か(緑枠部分)を設定すると、その中から1003の社員番号がついている人の名前を検索します。その結果、青枠内の答えが求められます、『オトナライフ』より 引用)

この式を実行すると、「鈴木一郎」という結果が返ってきます。

検索キーがユニークであることの重要性

「検索キーがユニーク」とは、表の中に同じ値が重複していないということ。たとえば、商品IDや顧客名などが検索キーになりますが、それらの値は表の中で一意である必要があります。

もし重複している場合、VLOOKUP関数は最初に見つかった値しか返しません。そのため、正しいデータを取り出せず、エラーが発生することもあります。

ExcelのVLOOKUP関数でデータ抽出(検索)する方法とは?エラー回避の方法も
(画像=たとえばこの表では社員番号が「1003」の社員が「鈴木一郎」と「高橋三郎」の2人います、『オトナライフ』より 引用)

この表から社員番号1003の名前を抽出する場合、先ほどと同じようにVLOOKUP関数を使います。

=VLOOKUP(1003,A2:C6,2,FALSE)

ExcelのVLOOKUP関数でデータ抽出(検索)する方法とは?エラー回避の方法も
(画像=「鈴木一郎」と「高橋三郎」は同じ社員番号1003ですが、結果は「鈴木一郎」しか表示されず、正しい結果は得られませんでした、『オトナライフ』より 引用)

「高橋三郎」が無視された理由はVLOOKUP関数が左端の列から順番に検索していくため。このように、検索キーがユニークでない場合は正しい結果が得られない可能性があります。

この問題を解決する方法は後ほど解説します。

別シートからデータを参照する方法

VLOOKUP関数では、別のシートからもデータを参照することも可能。なおその場合、検索範囲の指定方法に注意しなければなりません。

たとえば、「Sheet1」に以下の「社員名簿」の表があるとします。

ExcelのVLOOKUP関数でデータ抽出(検索)する方法とは?エラー回避の方法も
(画像=『オトナライフ』より 引用)

「Sheet2」には以下の「社員番号と時給」が記された表があります。

ExcelのVLOOKUP関数でデータ抽出(検索)する方法とは?エラー回避の方法も
(画像=『オトナライフ』より 引用)

このとき、「Sheet1」のC列(部署)の隣にD列(給与)を追加して、社員番号に対応する給与を「Sheet2」から参照したい場合は、以下のようにVLOOKUP関数を使います。

=VLOOKUP(A2,Sheet2!A:B,2,FALSE)

この場合、

・検索キー:A2(社員番号)
・検索範囲:Sheet2!A:B(別シートのセル範囲)
・列番号:2(時給)
・範囲参照:FALSE(完全一致)

という引数になります。

ExcelのVLOOKUP関数でデータ抽出(検索)する方法とは?エラー回避の方法も
(画像=A2セルの情報をSheet2の該当範囲から探して結果を表示します、『オトナライフ』より 引用)

この式を実行すると、「3000円」という結果が返ってきます。 検索範囲で別シートを指定するときは、「シート名!セル範囲」という形式で書くことがポイントです。

また、シート名に空白や記号が含まれる場合は、シングルクォーテーション(’)で囲む必要があります。たとえば、「社員番号 時給!A:B」ではなく、「‘社員番号 時給’!A:B」と書きます。