初めてのVLOOKUP関数|よくあるエラー・複数条件・部分一致の対処法をやさしく解説!

Excelでよく使われる関数のひとつ「VLOOKUP(ブイルックアップ)」。
初めて使う方にとっては、関数の形や引数の意味がわかりにくく、「なぜか正しく表示されない」「エラーになってしまう」と悩んでしまうことも多いです。
本記事では、VLOOKUP関数の基本的な使い方から、初心者がつまずきやすいエラーやトラブルの対処法までをやさしく解説します。
関数の仕組みをしっかり理解することで、複雑な集計や一覧表作成にもスムーズに活用できるようになりますよ!

目次

VLOOKUP関数とは?基本の使い方をやさしく解説

VLOOKUP関数は、指定した値をもとに、表の中から対応するデータを探してくれる関数です。たとえば「社員番号を入力したら、名前を自動表示する」といった使い方ができます。


■ VLOOKUP関数の基本構文

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

それぞれの引数の意味は以下の通りです。

引数 意味
検索値 探したい値(例:社員番号など)
範囲 検索対象の表(検索値を含む表)
列番号 表の左から何列目の値を取得するか
検索の型 完全一致なら「FALSE」、近似一致なら「TRUE」

■ 使用例:社員一覧から名前を取得する

たとえば、A列に社員番号、B列に氏名が入力された表があるとします。
C1セルに社員番号「1001」と入力し、対応する氏名をD1セルに表示したい場合は、次のように入力します。

=VLOOKUP(C1, A2:B10, 2, FALSE)
  • 「C1」=探したい社員番号

  • 「A2:B10」=データの範囲

  • 「2」=氏名は左から2列目

  • 「FALSE」=完全一致で探す


■ 注意点:検索値は範囲の一番左の列に置く

VLOOKUP関数は、検索値が範囲の一番左の列にある必要があります。
たとえば、氏名を検索して社員番号を取得したい場合にはうまく機能しないため、他の関数との組み合わせが必要になることもあります(後述)。

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

VLOOKUP関数は、同じシート内だけでなく別シートの表からもデータを取得することができます。たとえば「一覧表は別シートにまとめておきたい」「マスターデータを管理用シートと分けたい」といった場面で便利です。


■ 基本の構文(別シート参照)

=VLOOKUP(検索値, シート名!範囲, 列番号, FALSE)

「シート名!」という記述で、別シートのセル範囲を指定します。シート名にスペースが含まれる場合は、シングルクォーテーション(’)で囲む必要があります。


■ 使用例:別シート「社員マスタ」から氏名を取得

たとえば、検索値が「C2セル」、参照先が「社員マスタ」シートのA列(社員番号)〜B列(氏名)の場合、次のように入力します。

=VLOOKUP(C2, '社員マスタ'!A2:B100, 2, FALSE)

■ 注意点:参照先のシート名が変わるとエラーになる

参照しているシート名を変更すると、数式が壊れてしまいます。
シート名を変更する可能性がある場合は、シート名を固定(事前にルールを決める)しておくか、名前定義(名前付き範囲)を活用するとより安心です。

複数条件で検索する方法

VLOOKUP関数は1つの検索値をもとに値を取得する仕組みなので、「氏名と部署の両方が一致するデータを探したい」といった複数条件での検索にはそのままでは対応できません。

しかし、ちょっとした工夫をすることで複数条件検索も実現可能です。


■ 複数の条件を1つの値に結合する方法

複数の条件を1つの列にまとめ、「結合した検索値」で検索する方法が一般的です。
たとえば、「社員番号」と「部署名」で一意の組み合わせを作り、それを検索値として扱います。


【例:氏名を取得したい】

  1. 検索値を結合:
    =A2&B2(社員番号A列+部署名B列)を別列に作成

  2. 検索側も同様に結合:
    =D2&E2(検索したい社員番号+部署)を検索値として用意

  3. VLOOKUPを使う:

    =VLOOKUP(D2&E2, G2:I100, 3, FALSE)

※G列に「結合済みの検索列」、I列に氏名があるイメージです。


■ INDEX関数とMATCH関数の組み合わせも便利

VLOOKUPよりも柔軟に使える方法として、INDEXMATCHの組み合わせがあります。
こちらなら検索列が左にない場合でも使用でき、複数条件の検索にも応用しやすいです。


■ FILTER関数ならもっと簡単に

Excel 365以降をお使いなら、FILTER関数を使うことで複数条件もシンプルに扱えます:

=FILTER(C2:C10, (A2:A10=E2)*(B2:B10=F2))
  • A列=商品名、B列=産地、C列=価格

  • E2とF2に検索条件を入力した場合

FILTER関数については以下の記事で詳しく紹介しています。

Excel FILTER関数の使い方まとめ|複数条件・別シート・使えない時の対処法も解説!【事務作業がグッと楽に】


このように、VLOOKUP関数で複数条件に対応するには「結合して検索する」というテクニックが鍵になります。

補足】処理が重くなる場合に注意

複数条件での検索は便利ですが、数式内での結合や配列計算が多いと、ファイルの動作が重くなる原因になることもあります。
特に関数を多用した大規模なシートでは、フリーズや再計算の遅延に注意が必要です。

処理を軽く保ちたい場合は、検索用の列を別セルで事前に作成する方法がおすすめです。

関連記事:
Excelの再計算を止めるには?値の固定&数式を保持する対策法
※Excelが重くなる原因と軽量化のコツについては、別記事で詳しく解説予定です。

複数の結果を取り出したい時は?【vlookup 複数 結果】

VLOOKUP関数は1つの検索値に対して1つの結果を返すのが基本仕様です。
そのため、「同じ商品が複数ある場合にすべて一覧で表示したい」といった複数行の検索結果を取り出すことは、VLOOKUP単体では対応できません。


■ VLOOKUPでは最初に見つかった1件しか取得できない

以下のような表があったとします:

商品名 値段
リンゴ 100
バナナ 120
リンゴ 110

このとき =VLOOKUP("リンゴ", A2:B4, 2, FALSE) と入力すると、最初に見つかった「100」しか返ってきません。
2つ目以降のデータは取得できない仕様になっています。


■ 複数の結果を取得したい場合の対処法

複数行の結果を取り出したい場合は、以下の方法を検討しましょう:

  • FILTER関数(Excel 365以降)

  • INDEX+SMALL+IF関数の組み合わせ

  • Power Queryで抽出する

  • ピボットテーブルで集計・一覧表示


■ FILTER関数ならシンプルに解決

=FILTER(B2:B10, A2:A10="リンゴ")
  • A列に商品名、B列に価格があるとき

  • 「リンゴ」に該当するすべての価格が縦に一覧表示されます

※スピル機能対応のExcelが必要です(365、2021以降)

FILTER関数については以下の記事にて詳しく紹介しています。
Excel FILTER関数の使い方まとめ|複数条件・別シート・使えない時の対処法も解説!【事務作業がグッと楽に】


■ INDEX+SMALLで複数抽出する方法(旧Excel向け)

以下のような式で、該当データを1件ずつ上から順に取り出すことも可能です:

=INDEX(B$2:B$10, SMALL(IF(A$2:A$10="リンゴ", ROW(A$2:A$10)-ROW(A$2)+1), ROW(1:1)))

※配列数式のため、Ctrl + Shift + Enterが必要なバージョンもあります。
やや複雑なため、初心者の方にはFILTER関数やPower Queryの利用が現実的です。


■ ピボットテーブルやPower Queryも有効

「商品ごとに複数の価格を一覧で管理したい」などの目的であれば、ピボットテーブルやPower Queryで別表を作成した方がスッキリ整理でき、更新も簡単です。

ピボットテーブルとは?

ピボットテーブルとは、たくさんのデータを自動で集計・分類して見やすく整理できる機能です。
操作もドラッグ&ドロップでできるので、初心者でも直感的に使えるのが特徴です。
ピボットテーブルは[挿入]→[ピボットテーブル]で作成することができます。

ドラッグ&ドロップで項目選択や絞り込みが簡単にできます。

Power Query(パワークエリ)とは?

Power Query(パワークエリ)は、データを取り込んで、整理して、必要な形に変換するためのExcelの機能です。
複数ファイルをまとめたり、列の削除・並べ替えを自動化したりと、手作業では面倒な作業を効率化できるのが特長です。

Power Queryメニューは[データ]→[データの取得]メニューから利用することができます。

Excelファイル以外にもCSVファイルやPDFファイルなどファイル種類の違うデータからもデータを取り込むことができます。

VLOOKUPで合計したいときの注意点|正しいやり方と計算例を解説!

「特定の項目に該当する数値をすべて合計したい」という場面では、ついVLOOKUP関数でどうにかできないかと考えてしまう方も多いかもしれません。
ですが、VLOOKUP関数は合計処理には向いていないため、SUMIF関数を使うのが正しい選択です。


■ VLOOKUP関数は「1つの値を取り出す関数」

VLOOKUP関数は、検索条件に一致する最初の1件の値だけを取り出す関数です。
複数の該当データがある場合でも、最初に一致した1件目しか返しません。

=VLOOKUP("リンゴ", A2:B10, 2, FALSE)

上記のように記述すると、最初に見つかった「リンゴ」の金額しか取得されません。


■ 条件に合う数値を合計したいなら「SUMIF関数」

複数の条件に一致する値をまとめて合計したい場合は、SUMIF関数を使うとシンプルです。

=SUMIF(A2:A10, "リンゴ", B2:B10)

この式では、A列にある「リンゴ」と一致するすべての行の金額(B列)を合計します。
初心者でも扱いやすく、関数の意味も直感的です。


■ さらに条件を増やしたいなら「SUMIFS関数」

複数の条件を使って絞り込みたいときは、SUMIFS関数が便利です。

=SUMIFS(C2:C100, A2:A100, "リンゴ", B2:B100, "青森産")

このように、「商品名がリンゴ」「産地が青森」の行だけを合計できます。


■ 合計処理には合計専用の関数を使おう

VLOOKUP関数では「1件取得」はできますが、「複数行の合計」はできません。
合計を目的とするなら、SUMIFやSUMIFS関数を使う方が簡単で確実です。

【補足】価格 × 件数 のような合計にはVLOOKUPも使える

VLOOKUP関数は合計処理には直接向いていませんが、価格を取得する目的で使い、件数と掛け算することで売上などを計算する場面では有効です。

たとえば:

=VLOOKUP(商品名, 商品一覧, 2, FALSE) * COUNTIF(注文一覧, 商品名)

といった形で、価格 × 注文回数を求めることができます。

値が反映されない原因とは?【vlookup 反映 されない】

VLOOKUP関数を入力しても「結果が表示されない」「なぜか空白になる」「正しいはずのデータが出てこない」…
こういったときは、関数の構造や元データに原因があることが多いです。


■ よくある原因①:完全一致の指定がされていない

=VLOOKUP(A2, D2:F10, 2)

上記のように最後の引数(検索の型)を省略すると、自動で「近似一致(TRUE)」が適用されます。
これにより、表が昇順で並んでいないと正しく検索できない、もしくは見つからないというトラブルが起きます。


【対処法】
最後の引数に「FALSE(完全一致)」を指定する

=VLOOKUP(A2, D2:F10, 2, FALSE)

■ よくある原因②:検索値に余計なスペースが入っている

見た目は同じでも、セル内に空白や改行が含まれていると一致しません。

A列(検索値) D列(参照表)
山田太郎 山田太郎(スペース入り)

→ このような場合、一致していないと判断されてしまい、結果が表示されません。


【対処法】
→ SUBSTITUTE関数などを使って、スペースを明示的に除去してから検索する

例:
=VLOOKUP(SUBSTITUTE(SUBSTITUTE(A2, “ ”, “”), ” “, “”), E2:F10, 2, FALSE)
このようにすることで、全角スペースや半角スペースの混在による不一致を回避できます。

 

  • そのほか、補助的に使える関数:
    TRIM関数:
    複数の半角スペースを1つにまとめる/前後の半角スペースを削除
    (※全角スペースには対応しません)
  • CLEAN関数:
    改行や見えない制御文字を除去するのに便利です

ワンポイント:

見た目ではまったく同じでも、空白や表記の違いで一致しないことが非常によくあります。
VLOOKUPが#N/Aを返した場合は、まずスペースや表記の違いを疑うことが重要です。


【補足】見た目は同じでも「表記ゆれ」で一致しないケースも

セルの内容に全角・半角の違いや表記ゆれがあると、VLOOKUPは「一致していない」と判断してしまいます。

たとえば、次のような違いがあると一致しません:

  • 「ラーメン」 vs 「ラーメン」← 半角カナ

  • 「ラーメン」 vs 「らーめん」← ひらがなとカタカナ

  • 「チャーハン」 vs 「チャーハーン」← 微妙な文字の違い

このような「表記ゆれ」があると、関数が正しく動作しなくなります。


【対処法】

  • データ入力時に入力ルールを統一する(プルダウン設定や入力規則の活用)

  • 必要に応じて、表記ゆれを置換する仕組みを取り入れる


※表記ゆれの対策方法については、別記事で詳しく解説しています。
Excelの置換がうまくいかない?表記ゆれ・改行・複数一括置換の対処法まとめ!


■ よくある原因③:データ型の不一致(数値vs文字列)

同じ「1001」に見えても、片方が文字列、もう片方が数値になっていると一致しません。

【確認方法】

  • セルを選択して、数式バーで表示内容をチェック

  • '1001と表示されていれば文字列扱い

【対処法】
VALUE関数TEXT関数で型を揃える
例:

=VLOOKUP(VALUE(A2), D2:E10, 2, FALSE) ※検査値を文字列から数値にへんこう変更
=VLOOKUP(TEXT(A2,"0"), D2:F10, 2, FALSE) ※検査値を数値から文字列に変更

■ よくある原因④:範囲の列番号がずれている

列番号を誤って指定すると、思った値が出てこなかったり、#REF!エラーになることもあります。

=VLOOKUP(A2, D2:E10, 3, FALSE) ←範囲に存在しない3列目

→ このような場合、参照範囲と列番号の整合性を再確認しましょう。


■ 表示されないときは元データと関数をチェック

「正しい式を書いたのに反映されない」と感じたときは、まず検索値・参照表・一致条件・列番号の4つを順番に確認しましょう。

エラーが出る原因と対処法【vlookup エラー】

よくあるエラーについては、以下の簡単な一覧をご参考ください。
より詳しい原因や実例は、別記事で詳しく解説しています。

エラー 主な原因 対処のヒント
#N/A 一致するデータが見つからない 検索値とデータの違いを確認
#REF! 範囲外の列番号など 範囲と列番号の整合性を再確認
#VALUE! 無効な引数 データ型や構文ミスをチェック

→ VLOOKUP関数でエラーが出る原因と対処法まとめ|#N/A・#REF!・#VALUE!をやさしく解説

エラーに対する具体的な対策方法が知りたい場合は以下の記事をご参考ください。

VLOOKUP関数のエラー対策まとめ|IFERROR・IFNAや列構造の工夫でトラブルを防ぐ実務テクニック集


■ エラーごとに原因を見極めて対応を

VLOOKUP関数でエラーが出たときは、「なぜそのエラーなのか?」を冷静に見極めることで対処がしやすくなります。
一番多いのは #N/A(該当なし)なので、まず検索値とデータの整合性を疑うのがおすすめです。

初心者がつまずきやすいポイントまとめ

VLOOKUP関数はとても便利な関数ですが、使い方に少しでもズレがあると正しく動作しないという特徴があります。
ここでは、これまで紹介してきた内容をもとに、初心者が特につまずきやすいポイントをまとめました。


■ つまずきポイント①:最後の引数(TRUE/FALSE)の意味があいまい

  • 省略すると近似一致(TRUE)になってしまい、意図しない結果になることも。

  • 初心者は基本的に「FALSE(完全一致)」を指定すればOK!

=VLOOKUP(A2, D2:F10, 2, FALSE)

■ つまずきポイント②:列番号の数え方を間違える

  • VLOOKUP関数では、範囲の中で左から数えて何列目かを指定します。
    → 「シート全体の列番号」ではない点に注意!


■ つまずきポイント③:検索値とデータの「見た目」は同じでも一致しない

  • 半角スペース、全角文字、数値と文字列の違いなどにより一致していないと判定されることがあります。

  • TRIM関数やTEXT関数などで、データを整える工夫が有効です。


■ つまずきポイント④:「複数一致」や「複数結果」は苦手

  • VLOOKUPは基本的に1条件・1結果の関数。

  • 複数条件や複数結果が必要な場合は、他の関数(SUMIF、FILTER、INDEX+MATCHなど)との使い分けが重要です。


■ つまずきポイント⑤:エラー表示のまま放置してしまう

  • 特に #N/A や #REF! のままだと見た目も悪く、読者や上司に不安を与えることも。

  • IFERROR関数を活用して、エラー時の見た目を整えるだけでも印象アップにつながります。


まとめ:まずは「正しく使える1式」を目指そう

VLOOKUP関数は、「仕組み」と「ルール」を理解すれば初心者でも使いこなせるようになります。
最初は1件だけでも正しく検索できるように試しながら練習するのが近道です。
慣れてきたら、FILTER関数やINDEX関数との使い分けにも挑戦してみましょう!