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」と書きます。
VLOOKUP関数の応用的な使い方
VLOOKUP関数を応用的に使う以下の方法をご紹介します。
・文字列を含む検索や抽出する方法
・複数条件でデータを絞り込む方法
・エラー値(#N/A! / #REF!)を回避する方法
文字列を含む検索や抽出する方法
VLOOKUP関数では、数字だけでなく文字列も検索や抽出できます。その場合は、検索キーや検索範囲のデータ型に注意しなければなりません。 たとえば、「商品コード」と「商品名」の対応表が以下のようにあるとします。
この表から商品コード「B001」の商品名を抽出したい場合は、以下のようにVLOOKUP関数を使います。
=VLOOKUP(“B001”,A2:B6,2,FALSE)
この場合、
・検索キー:“B001”(ダブルクォーテーションで囲む)
・検索範囲:A2:B6
・列番号:2
・範囲参照:FALSE
という引数になります。この式を実行すると、「マグカップ」という結果が返ってきます。 文字列を検索するときは、検索キーをダブルクォーテーション(”)で囲むことがポイントです。
また、検索範囲内のデータ型も文字列である必要があります。たとえば、「商品コード」の列が数値型だった場合は、VLOOKUP関数では正しく検索できません。
その場合は、TEXT関数などを使ってデータ型を揃える必要があります。
複数条件でデータを絞り込む方法
VLOOKUP関数は、複数条件でデータを絞り込むこともできます。その場合は、IF関数やAND関数、OR関数などの論理関数と組み合わせて使います。 たとえば、「社員番号」と「部署」と「時給」の対応表が以下のようにあるとします。
この表から、もっとも時給が高い「営業部」か「マーケティング部」の社員での写真番号を表示したい場合、以下の関数を使います。
=VLOOKUP(IF(AND(B2=”営業部”, C2>=3000), A2, IF(AND(B2=”マーケティング部”, C2>=3000), A2, “”)), A:C, 1, FALSE)
この場合、
・検索キー:AND(OR(B2=“営業部”,B2=“マーケティング部”),C2>=3000)(複数条件)
・検索範囲:A2:C6
・列番号:1(社員番号)
・範囲参照:FALSE
という引数になります。この式を実行すると、「1001」という結果が返ってきます。「1005」は時給3000円未満なので抽出されません。 複数条件でデータを絞り込むときは、検索キーに論理関数を使うことがポイントです。また、検索範囲内のデータ型も検索キーと一致させる必要があります。
エラー値(#N/A! / #REF!)を回避する方法(IFERROR関数)
VLOOKUP関数では、エラー値(#N/A! / #REF!)が表示されることがよくあります。
これらのエラー値は、以下のような原因で発生します。
・#N/A!:計算すべき値が見つからない場合。たとえば、検索キーに一致する値が検索範囲内に存在しない場合です。
・#REF!:検索範囲外を検索させようとしている場合。たとえば、列番号に検索範囲内の列数より大きな値を指定した場合です。
これらのエラー値は見た目も良くないですし、他のセルの計算に影響する可能性もあります。
エラー値を回避する方法は、IFERROR関数を使うことです。IFERROR関数は、「エラーかどうか判断して処理する」という意味。以下のような書式で使用します。
=IFERROR(式, エラー時の処理)
・式:エラーかどうか判断したい式です。たとえば、「VLOOKUP(A2,B2:D5,3,FALSE)」などです。
・エラー時の処理:式がエラーだった場合に実行したい処理です。たとえば、「“該当なし”」や「“”」(空白)などです。
たとえば、「社員番号」と「名前」と「部署」の対応表が以下のようにあるとします。
この表から社員番号1005の名前を抽出したい場合は、以下のようにVLOOKUP関数を使います。
=VLOOKUP(1005,A2:C5,2,FALSE)
しかし、この式を実行すると、「#N/A!」というエラー値が返ってきます。これは社員番号1005が検索範囲内に存在しないためです。
このエラー値を回避するためには、IFERROR関数を使って以下のように書き換えます。
まとめ
この記事では、ExcelのVLOOKUP関数でデータ抽出(検索)する方法とエラー回避の方法を解説しました。VLOOKUP関数はデータ分析や管理に欠かせない便利な関数ですが、使い方や注意点も多くあります。ぜひこの記事を参考にして、VLOOKUP関数をマスターしてください。
※サムネイル画像(Image:Wachiwit / Shutterstock.com)