Excelでデータを扱うときに便利な関数のひとつであるVLOOKUP関数。指定した値に一致するデータを別の列から抽出(検索)できます。たとえば、社員番号から名前や部署を調べたり、商品コードから価格や在庫を確認したりする際によく利用されます。
この記事では、VLOOKUP関数の基本的な使い方から応用的な使い方や、VLOOKUP関数でよく起こるエラー値(#N/A! / #REF!)の原因と回避方法も紹介します。
VLOOKUP関数とは?データ抽出に便利な関数
VLOOKUP関数は、「Vertical Look Up」、つまり「縦方向に検索し、一致した値と同じ行の特定の値を返す」という意味を表わしています。VLOOKUP関数は、以下のような書式で使用します。
・検索キー:検索したいデータに対応する値。たとえば、「A2」などです。
・検索範囲:検索対象となるセル範囲を指定します。たとえば、「B2:F10」や「Sheet2!A1:D20」などです。
・列番号:検索範囲内で抽出したい列の番号を指定します。左端の列が1番目となります。
・範囲参照:検索キーが完全一致する場合は「FALSE」または「0」、近似一致する場合は「TRUE」または「1」を指定します。
VLOOKUP関数の基本的な使い方
VLOOKUP関数の基本的な使い方について解説します。
書式と引数の説明
VLOOKUP関数の書式と引数については前項で説明しましたが、ここでは具体的な使用例を見てみましょう。 以下は社員番号から名前や部署を管理している表です。
この表から社員番号1003の名前を抽出したい場合は、以下のようにVLOOKUP関数を使います。
=VLOOKUP(1003,A2:C5,2,FALSE)
この場合、
・検索キー:1003
・検索範囲:A2:C5
・列番号:2
・範囲参照:FALSE
という引数になります。
この式を実行すると、「鈴木一郎」という結果が返ってきます。
検索キーがユニークであることの重要性
「検索キーがユニーク」とは、表の中に同じ値が重複していないということ。たとえば、商品IDや顧客名などが検索キーになりますが、それらの値は表の中で一意である必要があります。
もし重複している場合、VLOOKUP関数は最初に見つかった値しか返しません。そのため、正しいデータを取り出せず、エラーが発生することもあります。
この表から社員番号1003の名前を抽出する場合、先ほどと同じようにVLOOKUP関数を使います。
=VLOOKUP(1003,A2:C6,2,FALSE)
「高橋三郎」が無視された理由はVLOOKUP関数が左端の列から順番に検索していくため。このように、検索キーがユニークでない場合は正しい結果が得られない可能性があります。
この問題を解決する方法は後ほど解説します。
別シートからデータを参照する方法
VLOOKUP関数では、別のシートからもデータを参照することも可能。なおその場合、検索範囲の指定方法に注意しなければなりません。
たとえば、「Sheet1」に以下の「社員名簿」の表があるとします。
「Sheet2」には以下の「社員番号と時給」が記された表があります。
このとき、「Sheet1」のC列(部署)の隣にD列(給与)を追加して、社員番号に対応する給与を「Sheet2」から参照したい場合は、以下のようにVLOOKUP関数を使います。
=VLOOKUP(A2,Sheet2!A:B,2,FALSE)
この場合、
・検索キー:A2(社員番号)
・検索範囲:Sheet2!A:B(別シートのセル範囲)
・列番号:2(時給)
・範囲参照:FALSE(完全一致)
という引数になります。
この式を実行すると、「3000円」という結果が返ってきます。 検索範囲で別シートを指定するときは、「シート名!セル範囲」という形式で書くことがポイントです。
また、シート名に空白や記号が含まれる場合は、シングルクォーテーション(’)で囲む必要があります。たとえば、「社員番号 時給!A:B」ではなく、「‘社員番号 時給’!A:B」と書きます。