2025/5/8

VLOOKUP関数の使い方: エラー(N/A,REF)の対処、MATCH+INDEXやXLOOKUPと比較【コピペ用テンプレートあり】

Thumbnail for VLOOKUP関数の使い方: エラー(N/A,REF)の対処、MATCH+INDEXやXLOOKUPと比較【コピペ用テンプレートあり】

はじめに

エクセルのVLOOKUP関数は、 データベース(テーブル)からデータ値を抽出するときによく使われる関数です。

ここでは、

  • VLOOKUP関数の簡単な使い方
  • エラー(#N/A, #REF!)が出る原因とその解決方法
  • 代替方法(MATCH関数とINDEX関数の組合せ、XLOOKUP関数)との比較

について取り扱います。

下にテンプレート・サンプルのセルデータがあるので、 コピペですぐに使用できます。

VLOOKUP関数とは

VLOOKUP関数は、 検索してヒットした行の中の値を返す関数です。

  • =VLOOKUP("c", $A$3:$B$7, 2, FALSE) $A$3:$B$7範囲の中でcを検索し、ヒットした行の中の 2列目の値を返す。

※ 行と列を入れ替えたバージョンの関数(HLOOKUP関数)もあります。

簡単な使い方

VLOOKUP関数を使うには、 検索値と検索範囲、出力する行番号を指定します。 デフォルトであいまい検索がON になっているため、 第4引数をFALSEにしてOFFにすることが多いです。

VLOOKUP関数

指定した値を配列の中で検索し、ヒットした行の中の(指定列の)値を返します。

例:=VLOOKUP("c",A2:B5,2) A2:B5範囲で cを検索し、ヒットした行の2列目の値を返す。

  • 第1引数 ("c"): 検索する値(必須)
  • 第2引数 (A2:B5): 検索範囲(必須)
  • 第3引数 (2): 取得する列番号(必須)
  • 第4引数 : あいまい(近似一致)検索するか (TRUE / FALSE)(オプション)

エラーや意図しない動作の修正方法

VLOOKUP関数でうまく動作しない場合、 以下の原因が考えられます。

  • エラー #N/A が出力されるとき :
    • 検索範囲に検索値が存在しない 検索範囲の値と検索値をよく確認する。
    • 検索列が検索範囲の左端でない 検索列を左端に移動する(テーブルの加工)。または他の関数(MATCH+INDEXXLOOKUP)を使用する。
  • エラー #REF!が出力されるとき :
    • 列番号が間違っている 指定した列番号が検索範囲外になっていないか確認する。
  • 意図しない値が返される(検索がうまくいかない)とき :
    • あいまい検索になっている 第4引数をFALSEに変更し、あいまい検索をOFFにする。

MATCH + INDEX関数、XLOOKUP関数との比較

VLOOKUP関数の代替として、

  • MATCH関数とINDEX関数の組合せ
  • XLOOKUP関数

があります。

比較すると以下の通りになります。

関数メリットデメリット
VLOOKUP関数旧版エクセルから使用可能。検索列が左端である必要がある。
MATCH + INDEX関数旧版エクセルから使用可能。検索列の位置に制限なし。数式がやや複雑になる。
XLOOKUP関数検索列の位置に制限なし。数式がシンプル。HLOOKUPの代わりにもなる。エクセル2021 / 365以降でのみ使用可能。

新しいエクセル環境であれば、XLOOKUP関数がおすすめです。

サンプル

以下の 全セルをコピー ボタンをクリックし、エクセルの A1 セルに貼り付けると、 F4セルに VLOOKUP関数で抽出した値が表示されます。

代替関数である

  • MATCH +INDEX関数 (F5セル)
  • XLOOKUP関数 (F6セル; エクセル2021 / 365以降でのみ機能)

を使った例も併記しています。

ABCDEFG
1データデータ値の抽出
2ラベルX(検索値)(抽出値)
3a1使用関数ラベルX
4b2VLOOKUPc=VLOOKUP(E4,$A$3:$B$7,2,FALSE)
5c3MATCH + INDEXc=INDEX($B$3:$B$7,MATCH(E5,A3:$A$7))
6d4XLOOKUPc=XLOOKUP(E6,A3:A7,B3:B7)
7e5