オンライン Excel エディター
無料で使う

VLOOKUP 関数の使い方:構文・例・エラー対処

2026-10-12 更新 · 無料 · Excel と Google Sheets に対応

構文

=VLOOKUP(検索値, 範囲, 列番号, [検索の型])

クイック回答

VLOOKUP は範囲の先頭列から検索値を探し、同じ行の別の列の値を返します。完全一致の書き方は =VLOOKUP(A2, $D$2:$E$500, 2, FALSE)——第 4 引数は FALSE(または 0)がほとんどの場面で正解です。#N/A の原因はほぼ 2 つ:検索値が範囲の先頭列にないか、数値が文字列として保存されているか、目に見えない空白が残っているかです。

構文

=VLOOKUP(検索値, 範囲, 列番号, [検索の型])
引数必須意味
lookup_value必須検索する値——数値、文字列、日付、または A2 のようなセル参照。
table_array必須検索対象の範囲。VLOOKUP は必ず範囲の「先頭列」だけを検索し、右側の列しか返せません。
col_index_num必須範囲の左端から数えて何列目を返すか(1 = 検索列そのもの)。
range_lookup省略可FALSE(または 0)= 完全一致。TRUE(または 1)= 近似一致。先頭列の昇順ソートが必要です。

「先頭列ルール」は #N/A エラーの最大の原因です:検索列は table_array の最も左の列でなければならず、欲しいデータが表のどこにあっても関係ありません。

基本的な使用例

=VLOOKUP(A2, $D$2:$E$500, 2, FALSE)

A2 の値を D2:E500 の中で検索し、一致した行の 2 列目を返します。$ マークで範囲を固定しているので、数式を下にコピーしても検索範囲はずれません。

=VLOOKUP(A2, Sheet2!A:C, 3, FALSE)

別シートをまたぐ検索:Sheet2!A:C がそのシート上の範囲で、その 3 列目を返します。

=IFERROR(VLOOKUP(A2, $D$2:$E$500, 2, FALSE), "見つかりません")

VLOOKUP を IFERROR で囲むと、生の #N/A をわかりやすいメッセージに置き換えられます——共有シートの定番パターンです。

近似一致が本当に必要な場合を除き、必ず FALSE を付けてください。TRUE(または第 4 引数の省略)では、VLOOKUP が検索値以下の最も近い値を黙って返します——結果が間違っていてもエラーは出ません。

よくあるエラーと対処法

エラー最も多い原因直し方
#N/A検索値が table_array の先頭列にない——または「見た目だけ同じ」(文字列と数値の不一致、末尾の空白)。先頭列ルールを確認;VALUE() で文字列の数値を変換;まず目に見えない空白を一括クリーニング。
#REF!col_index_num が table_array の実際の列数を超えている。数えるのはシート全体ではなく、範囲内の列数です。
#VALUE!col_index_num が 1 未満(参照が壊れている場合が多い)、または旧 Excel で 255 文字を超える検索文字列。列番号は 1 以上に;非常に長い文字列は INDEX/MATCH に切り替え。
#NAME?関数名のスペルミス——または日本語版 Excel での単純ミス、逆に英語版でローカライズ名を使った場合。=VLOOKUP( まで入力してオートコンプリートに任せる。

Web から貼り付けた末尾の空白や改行なしスペース(NBSP)は、#N/A の最も分かりにくい原因です:VLOOKUP にとって「NYC 」と「NYC」は別の文字列です。検索の前にワンクリックで列全体の空白を整えましょう。

VLOOKUP と XLOOKUP の違い

VLOOKUPXLOOKUP
使える環境すべての Excel バージョン(Google Sheets も)Microsoft 365 と Excel 2021 以降
左方向の検索不可可能
既定で完全一致いいえ——FALSE の指定が必要はい
列の挿入に強いいいえ——col_index_num は固定なので、ずれることがあるはい
見つからないとき#N/A(IFERROR で包む)if_not_found 引数を内蔵

誰に渡しても開ける共有ブックや Google Sheets では VLOOKUP のままが安全です。Microsoft 365 で新しく作るブックなら XLOOKUP が第一選択:先頭列ルール・FALSE の習慣・IFERROR の包みを一度に解消できます。

Google Sheets での VLOOKUP

Google Sheets は Excel と同じ構文・動作の VLOOKUP をサポートしています——上の数式はそのまま貼り付けて使えます。

  • 完全一致と近似一致の挙動は同じで、TRUE のときの先頭列昇順ソートの要件も共通です。
  • ワイルドカードも同じ:「?」は 1 文字、「*」は任意の連続文字、「~」はエスケープに使います。
  • 小数点にカンマを使うロケール(ドイツ、ヨーロッパやラテンアメリカの一部)では、引数の区切りにセミコロンを使います:=VLOOKUP(A2; D2:E500; 2; FALSE)。Excel も同じ設定では同じ動作です。
  • 現在の Google Sheets には XLOOKUP もありますが、古い共有シートは今なお VLOOKUP 前提のことが多い——互換性のため残す価値があります。

限界と実践テクニック

  • 左方向には検索できません:検索列は常に範囲の先頭列です。左側の列を返したい場合は INDEX/MATCH または XLOOKUP を。
  • 最初の 1 件しか返しません——検索列に重複があっても黙って無視されます。
  • 下にコピーする前に $ で範囲を固定しましょう。固定しないと 2 行目は D3:E501、3 行目は D4:E502 を見に行きます。
  • 近似一致(TRUE)は先頭列の昇順ソートが必須です。並びが崩れると、エラーなしで誤った結果を返します。
  • フィルハンドル(選択範囲の右下の小さな四角)をダブルクリックすれば、数式を最終行まで一気にコピーできます。

1 つの値ではなく、別のファイルから多くの列をまとめて取りたいなら、それは「検索」ではなく「テーブル結合」です——下の無料ブラウザツールなら数式なしでできます。

関連ツール

関連関数

よくある質問

Excel の VLOOKUP は何をする関数ですか?

VLOOKUP(縦方向検索)は範囲の先頭列から値を探し、同じ行の別の列にある値を返します。大きなマスタ一覧から価格・氏名・ステータスを表に引き込む定番の方法です。

値が見えているのに VLOOKUP が #N/A を返すのはなぜ?

大抵は「見た目だけ同じ」です:片方は文字列でもう片方は本物の数値、または文字列に末尾の空白や改行なしスペースが残っています。VALUE() で文字列の数値を変換するか、見えない空白を整えれば一致します。

最後の引数は TRUE と FALSE のどちらを使うべき?

ほぼすべての場面で FALSE(完全一致)です。TRUE は近似一致で、検索値以下の最も近い値を黙って返します——しかも先頭列が昇順ソートされているときだけ正しく動きます。

VLOOKUP は左方向を検索できますか?

できません。VLOOKUP は常に範囲の先頭列を検索し、右側の列しか返せません。左側の列を返したい場合は INDEX/MATCH——Microsoft 365 をお持ちなら XLOOKUP を使いましょう。

別のシートをまたいで VLOOKUP するには?

範囲の前にシート名を付けます:=VLOOKUP(A2, Sheet2!A:C, 3, FALSE)。別ブックの場合は [Book.xlsx]Sheet2!A:C という参照になりますが、両方のデータを同じブックに置く方が確実です。

VLOOKUP で複数の一致を返せますか?

できません。VLOOKUP は最初の一致で止まります。すべての一致を返すには、Microsoft 365 や Google Sheets の FILTER を使うか、重複に番号を付ける補助列を追加します。

Google Sheets의 VLOOKUP도 Excel과 같나요?

같습니다——구문, 일치 모드, 와일드카드 모두 Excel과 동일합니다. 유일한 차이는 인수 구분 기호로, 소수점에 쉼표를 쓰는 로캘에서는 세미콜론을 사용합니다.

自分のファイルで試す準備はできましたか?

2つのExcelテーブルをキーで結合を開く — 無料