ExcelのVLOOKUP関数でデータ抽出(検索)する方法とは?エラー回避の方法も

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

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

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

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

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

VLOOKUP関数を使うことで、出したい情報を簡単に検索できます。たとえば商品リストから指定した商品コードの商品名や価格を取り出したり、社員名簿から社員番号や所定の入社時期などの条件に合致する社員を取り出す際に便利です

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

VLOOKUP関数の基本的な使い方

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

書式と引数の説明

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

書式と引数の説明1

社内で社員の情報を管理するために、よくExcelの表が使われます

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

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

この場合、

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

という引数になります。

書式と引数の説明2

赤枠の中の何列目か(緑枠部分)を設定すると、その中から1003の社員番号がついている人の名前を検索します。その結果、青枠内の答えが求められます

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

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

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

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

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

たとえばこの表では社員番号が「1003」の社員が「鈴木一郎」と「高橋三郎」の2人います

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

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

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

「鈴木一郎」と「高橋三郎」は同じ社員番号1003ですが、結果は「鈴木一郎」しか表示されず、正しい結果は得られませんでした

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

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

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

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

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

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

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

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

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

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

この場合、

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

という引数になります。

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

A2セルの情報をSheet2の該当範囲から探して結果を表示します

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

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

VLOOKUP関数の応用的な使い方

VLOOKUP関数を応用的に使う以下の方法をご紹介します。

・文字列を含む検索や抽出する方法
・複数条件でデータを絞り込む方法
・エラー値(#N/A! / #REF!)を回避する方法

文字列を含む検索や抽出する方法

VLOOKUP関数では、数字だけでなく文字列も検索や抽出できます。その場合は、検索キーや検索範囲のデータ型に注意しなければなりません。 たとえば、「商品コード」と「商品名」の対応表が以下のようにあるとします。

文字列を含む検索や抽出する方法1

この表から商品コード「B001」の商品名を抽出したい場合は、以下のようにVLOOKUP関数を使います。

=VLOOKUP(“B001”,A2:B6,2,FALSE)

この場合、

・検索キー:“B001”(ダブルクォーテーションで囲む)
・検索範囲:A2:B6
・列番号:2
・範囲参照:FALSE

という引数になります。この式を実行すると、「マグカップ」という結果が返ってきます。 文字列を検索するときは、検索キーをダブルクォーテーション(”)で囲むことがポイントです。

文字列を含む検索や抽出する方法2

B001を“”(ダブルクオーテーション)で囲まない場合、B1と変換されてしまいエラーが表示されます

また、検索範囲内のデータ型も文字列である必要があります。たとえば、「商品コード」の列が数値型だった場合は、VLOOKUP関数では正しく検索できません。

その場合は、TEXT関数などを使ってデータ型を揃える必要があります。

複数条件でデータを絞り込む方法

VLOOKUP関数は、複数条件でデータを絞り込むこともできます。その場合は、IF関数やAND関数、OR関数などの論理関数と組み合わせて使います。 たとえば、「社員番号」と「部署」と「時給」の対応表が以下のようにあるとします。

複数条件でデータを絞り込む方法1

社員番号、部署、時給を管理しているシートです

この表から、もっとも時給が高い「営業部」か「マーケティング部」の社員での写真番号を表示したい場合、以下の関数を使います。

=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関数)1

たとえばこのようなエラーが表示されます

これらのエラー値は、以下のような原因で発生します。

・#N/A!:計算すべき値が見つからない場合。たとえば、検索キーに一致する値が検索範囲内に存在しない場合です。
・#REF!:検索範囲外を検索させようとしている場合。たとえば、列番号に検索範囲内の列数より大きな値を指定した場合です。

これらのエラー値は見た目も良くないですし、他のセルの計算に影響する可能性もあります。

エラー値を回避する方法は、IFERROR関数を使うことです。IFERROR関数は、「エラーかどうか判断して処理する」という意味。以下のような書式で使用します。

=IFERROR(式, エラー時の処理)

・式:エラーかどうか判断したい式です。たとえば、「VLOOKUP(A2,B2:D5,3,FALSE)」などです。
・エラー時の処理:式がエラーだった場合に実行したい処理です。たとえば、「“該当なし”」や「“”」(空白)などです。

たとえば、「社員番号」と「名前」と「部署」の対応表が以下のようにあるとします。

エラー値(#N/A! / #REF!)を回避する方法(IFERROR関数)2

社員番号、名前、部署を管理する表です

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

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

しかし、この式を実行すると、「#N/A!」というエラー値が返ってきます。これは社員番号1005が検索範囲内に存在しないためです。

エラー値(#N/A! / #REF!)を回避する方法(IFERROR関数)3

VLOOKUPのエラーを、IFERRORで非表示にできます

このエラー値を回避するためには、IFERROR関数を使って以下のように書き換えます。

エラー値(#N/A! / #REF!)を回避する方法(IFERROR関数)4

=iferror(VLOOKUP(1005,A2:C5,2,FALSE),”該当なし”) この式を実行すると、「該当なし」という結果が返ってきます。これはIFERROR関数がVLOOKUP関数の結果がエラーだった場合に「“該当なし”」という処理を実行したためです

まとめ

この記事では、ExcelのVLOOKUP関数でデータ抽出(検索)する方法とエラー回避の方法を解説しました。VLOOKUP関数はデータ分析や管理に欠かせない便利な関数ですが、使い方や注意点も多くあります。ぜひこの記事を参考にして、VLOOKUP関数をマスターしてください。

※サムネイル画像(Image:Wachiwit / Shutterstock.com)

オトナライフ編集部
iPhone・Android・SNS・パソコン関連・キャッシュレス、QRコード決済など、さまざまな情報を独自の視点や切り口で発信するニュースサイト
X/Twitter:@otonalife
YouTube:OTONALIFE Ch

iPhone/Androidスマホやキャッシュレス決済、SNS、アプリに関する情報サイト[オトナライフ]

ExcelのVLOOKUP関数でデータ抽出(検索)する方法とは?エラー回避の方法ものページです。オトナライフは、【スキル・ビジネスExcel関数Excelの使い方VLOOKUP関数】の最新ニュースをいち早くお届けします。