2025/5/8
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
関数を使うには、 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
+INDEX
やXLOOKUP
)を使用する。
- エラー
#REF!
が出力されるとき :- 列番号が間違っている 指定した列番号が検索範囲外になっていないか確認する。
- 意図しない値が返される(検索がうまくいかない)とき :
- あいまい検索になっている 第4引数を
FALSE
に変更し、あいまい検索をOFFにする。
- あいまい検索になっている 第4引数を
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以降でのみ機能)
を使った例も併記しています。
A | B | C | D | E | F | G | |
1 | データ | データ値の抽出 | |||||
2 | ラベル | X | (検索値) | (抽出値) | |||
3 | a | 1 | 使用関数 | ラベル | X | ||
4 | b | 2 | VLOOKUP | c | =VLOOKUP(E4,$A$3:$B$7,2,FALSE) | ||
5 | c | 3 | MATCH + INDEX | c | =INDEX($B$3:$B$7,MATCH(E5,A3:$A$7)) | ||
6 | d | 4 | XLOOKUP | c | =XLOOKUP(E6,A3:A7,B3:B7) | ||
7 | e | 5 |