VLOOKUPが正しいのに動かない?よくある原因と解決策【Excel完全ガイド】

Excel VlookUP 正しいのに

「VLOOKUPを正しく入力したはずなのに、なぜかうまく動かない…。」
そんな経験、ありませんか?

  • #N/A0 が表示される
  • 間違った値が返ってくる
  • 一部のデータだけうまく検索できない

Excelを使いこなしたいのに、思うようにいかずイライラ…。
でも安心してください。VLOOKUPのトラブルには 共通する原因 があり、それを知れば すぐに解決 できます!

本記事では、VLOOKUPが正しく設定されているのに動かない理由と、その対処法を徹底解説 します。

  1. 1️⃣ 検索値のデータ形式が違う(数値 vs 文字列)
    1. ✅ 症状
    2. 🔍 原因
    3. 💡 解決策
  2. 2️⃣ 検索範囲の1列目に検索キーがない
    1. ✅ 症状
    2. 🔍 原因
    3. 💡 解決策
  3. 3️⃣ 近似一致(TRUE)が設定されている
    1. ✅ 症状
    2. 🔍 原因
    3. 💡 解決策
  4. 4️⃣ 検索範囲の絶対参照がズレている
    1. ✅ 症状
    2. 🔍 原因
    3. 💡 解決策
      1. 🟢 絶対参照ってなに?
        1. 📝 Excelの3つのセル参照
        2. 🟢 絶対参照の使い方(基本編)
          1. 📌 相対参照(ズレる)
          2. 📌 絶対参照(固定)
        3. 🟢 絶対参照のショートカット技!
          1. 🔹 F4キーで絶対参照を設定する
          2. F4キーを押すたびに切り替わる!
      2. 🟢 絶対参照の活用例(VLOOKUP編)
  5. 5️⃣ 検索値が重複している
    1. ✅ 症状
    2. 🔍 原因
    3. 💡 解決策
  6. 6️⃣ 別のシートやブックを参照している
    1. ✅ 症状
    2. 🔍 原因
    3. 💡 解決策
  7. 7️⃣ そもそもVLOOKUPでは限界がある
  8. 🔹 まとめ
  9. VLOOKUPの限界を突破!INDEX+MATCHを初心者向けにわかりやすく解説
    1. 1️⃣ そもそもINDEX+MATCHとは?
      1. 🔹 INDEX関数(データを取り出す)
      2. 🔹 MATCH関数(検索値の位置を調べる)
    2. 2️⃣ INDEX+MATCHを組み合わせてVLOOKUPの代わりにする
      1. 🎯 例:「名前」から「部署」を検索する
    3. 3️⃣ INDEX+MATCHがVLOOKUPより優れている理由
    4. 4️⃣ INDEX+MATCHの応用テクニック
      1. 🔹 横方向の検索(MATCHの列番号取得)
    5. 5️⃣ XLOOKUP(Excel 2019以降)ならもっと簡単!
      1. 🔹 まとめ

1️⃣ 検索値のデータ形式が違う(数値 vs 文字列)

✅ 症状

  • #N/A が表示される
  • 該当するデータがあるのに、検索できない

🔍 原因

VLOOKUPでは、検索値と検索対象のデータ型が一致していないと検索できません。
たとえば、「123」という 数値 を探そうとしても、検索対象が「’123」(文字列)になっていると一致しません。

💡 解決策

データの形式を揃える

  1. =ISTEXT(A1)TRUE なら文字列、FALSE なら数値
  2. =ISNUMBER(A1)TRUE なら数値、FALSE なら文字列

文字列を数値に変換

=VALUE(A1)

数値を文字列に変換

=TEXT(A1,0)

「データ」タブ → 「区切り位置」機能で統一

参考:Excel VLOOKUPで(式は間違ってないのに)#N/Aエラーが出る原因と解決方法:文字形式の違いに注意!

2️⃣ 検索範囲の1列目に検索キーがない

✅ 症状

  • #N/A が表示される
  • 間違った値が返ってくる

🔍 原因

VLOOKUPは、検索範囲の「1列目」からしか検索できません!
たとえば、以下のようなデータがあるとします。

A列(社員ID) B列(名前) C列(部署)
1001 佐藤 営業
1002 田中 総務
1003 鈴木 開発

ここで、「名前(B列)」を基準に部署を検索する ことは、VLOOKUPではできません。
(検索範囲の1列目が社員IDのA列だから)

💡 解決策

検索範囲の1列目を変更(B列を検索範囲の1列目にする)
INDEX+MATCHを使う(VLOOKUPの制約を回避)

=INDEX(C2:C4, MATCH("田中", B2:B4, 0))

💡 MATCHが「田中」の行番号(2行目)を取得し、INDEXで対応する「総務」を返す!

→ このINDEX+MATCHの最強の組み合わせについては、記事末尾に詳しく解説を載せています。

3️⃣ 近似一致(TRUE)が設定されている

✅ 症状

  • 間違った値が返ってくる

🔍 原因

VLOOKUPの4番目の引数が TRUE(近似一致) になっていると、
「ピッタリの値がなくても、近い値を探してしまう」 という仕様があります。

たとえば、

=VLOOKUP(1002, A2:C4, 3, TRUE)

この場合、IDが1002ぴったりでなくても、近いIDを返してしまう のです。

💡 解決策

必ず「FALSE(完全一致)」を指定する!

=VLOOKUP(1002, A2:C4, 3, FALSE)

これで、完全に一致するデータのみ検索できる ようになります。

4️⃣ 検索範囲の絶対参照がズレている

✅ 症状

  • 数式をコピーすると、うまく検索できなくなる

🔍 原因

検索範囲が相対参照のままだと、コピーしたときに範囲がズレてしまいます。

💡 解決策

✅ 検索範囲を 絶対参照($マークをつける) にする!(セルを選択してF4キー)

=VLOOKUP(A2, $B$2:$D$100, 2, FALSE)

こうすることで、どこにコピーしても検索範囲が固定されます。

🟢 絶対参照ってなに?

「先輩!Excelで計算式をコピーしたら、結果がズレちゃいました💦 何が原因なんでしょう?」

「それは 「絶対参照」 を使ってないからだね!エクセルのセル参照には 「相対参照」「絶対参照」「複合参照」 の3種類があるんだよ。」

📝 Excelの3つのセル参照
参照の種類 書き方 特徴
相対参照 A1 数式をコピーするとセルの位置がズレる
絶対参照 $A$1 数式をコピーしてもセルが固定される
複合参照 $A1 または A$1 行または列のどちらかを固定

へぇ!$ を付けると セルを固定できる んですね!」

🟢 絶対参照の使い方(基本編)

じゃあ、絶対参照を使うと どう変わる んですか?

例えば、消費税の計算 をするときに 税率を固定 する場合を考えてみよう!

📌 相対参照(ズレる)
A列(商品) B列(価格) C列(税率) D列(税込価格)
税率 8%
りんご 100
みかん 150
ぶどう 200
=B3*(1+C1)

👉 この数式を下にコピーすると、「C2」「C3」とズレてしまい、税率が正しく適用されない!

📌 絶対参照(固定)
=B3*(1+$C$1)

👉 「$C$1」を固定することで、どこにコピーしても税率(8%)を適用できる!

「なるほど! C1常に参照したい場合は $C$1 とする んですね!」

🟢 絶対参照のショートカット技!

「でも 手動で「$」を入れるのは面倒 じゃないですか?💦」

「そこで F4キー を使うと、一瞬で設定できるよ!」

🔹 F4キーで絶対参照を設定する
  1. 数式のセルをクリック し、参照するセル(例:C1)にカーソルを置く
  2. F4キーを押すと、「$」が自動でつく!
F4キーを押すたびに切り替わる!

1️⃣ C1(相対参照) → $C$1(絶対参照)
2️⃣ $C$1C$1(行固定)
3️⃣ C$1$C1(列固定)
4️⃣ $C1C1(相対参照に戻る)

「F4キーを押すだけで絶対参照を設定できるんですね!これは便利!」

🟢 絶対参照の活用例(VLOOKUP編)

「絶対参照ってVLOOKUPでも使いますか?」

「めちゃくちゃ使うよ!VLOOKUPでは、検索範囲を固定しないと数式をコピーしたときにズレてしまう んだ。」

📌 絶対参照なし(相対参照)

=VLOOKUP(A2, B2:D10, 2, FALSE)

👉 コピーすると「B3:D11」「B4:D12」…と検索範囲がズレる!

📌 絶対参照あり(検索範囲を固定)

=VLOOKUP(A2, $B$2:$D$10, 2, FALSE)

👉 検索範囲 $B$2:$D$10 を固定することで、ズレずに正しく検索できる!

「これは VLOOKUPを安定して使うのに必須 ですね!」

5️⃣ 検索値が重複している

✅ 症状

  • 期待とは違う値が返ってくる

🔍 原因

VLOOKUPは 最初に見つかったデータだけを返します!
検索対象のデータが重複していると、正しいデータが返らないことがあります。

💡 解決策

データの重複を確認する(条件付き書式で重複チェック)
FILTER関数を使う(Excel365以降)

=FILTER(C2:C100, B2:B100=A2)

これなら、該当する全てのデータを取得できます。

6️⃣ 別のシートやブックを参照している

✅ 症状

  • #REF!#N/A が出る

🔍 原因

VLOOKUPで別のシートやブックを参照していると、ファイルが開いていないと動作しない場合があります。

💡 解決策

外部ファイルを開く
INDIRECT関数で参照を安定させる

=VLOOKUP(A2, INDIRECT("別シート!B2:D100"), 2, FALSE)

7️⃣ そもそもVLOOKUPでは限界がある

VLOOKUPには、
☑ 検索範囲の1列目しか使えない
☑ 列番号を手動で指定しないといけない
などの制約があります。

INDEX+MATCHなら制約なし!

=INDEX(C2:C100, MATCH(A2, B2:B100, 0))

XLOOKUP(Excel 2019以降)ならもっと簡単!

=XLOOKUP(A2, B2:B100, C2:C100)

🔹 まとめ

「#N/A」が出る → データ型をチェック!
間違った値が返る → 完全一致(FALSE)を指定!
検索範囲の絶対参照を確認!
INDEX+MATCHやXLOOKUPも検討!

これで、VLOOKUPでハマることはもうありません!
エクセルの時短テクを活用して、残業を減らしましょう! 🚀

【番外編】※※もっと詳しく※※

VLOOKUPの限界を突破!INDEX+MATCHを初心者向けにわかりやすく解説

「VLOOKUPを使っているけど、うまくいかない…。」
そんな悩みを持っていませんか?

実は、VLOOKUPにはいくつかの制約があり、それを克服できるのが「INDEX+MATCH」 という組み合わせ技です!

💡 INDEX+MATCHなら…
VLOOKUPの「検索範囲の1列目しか検索できない」制約を突破できる!
列の挿入・削除があっても壊れない!
VLOOKUPよりも柔軟に検索できる!

「関数が難しそう…」と思うかもしれませんが、
基本の考え方を理解すれば、VLOOKUPよりも自由にデータを検索できるようになります!

1️⃣ そもそもINDEX+MATCHとは?

INDEXとMATCHは、それぞれ単体でも使える関数ですが、組み合わせると VLOOKUPの上位互換 になります。

🔹 INDEX関数(データを取り出す)

INDEX関数は、「表の○行○列のデータを取得する」という関数です。
📌 基本の形

=INDEX(範囲, 行番号, [列番号])
A列(ID) B列(名前) C列(部署)
1001 佐藤 営業
1002 田中 総務
1003 鈴木 開発

例えば、C列(部署)の 2行目 のデータを取り出したいなら…

=INDEX(C2:C4, 2)

結果 👉 「総務」

🔹 MATCH関数(検索値の位置を調べる)

MATCH関数は、「指定した値が範囲の何番目にあるか?」を調べる関数です。
📌 基本の形

=MATCH(検索値, 検索範囲, 検索方法)
A列(ID) B列(名前) C列(部署)
1001 佐藤 営業
1002 田中 総務
1003 鈴木 開発

例えば、「田中」がB列のどこにあるか調べたい場合、

=MATCH("田中", B2:B4, 0)

結果 👉 2(B列の2行目にあるから)

2️⃣ INDEX+MATCHを組み合わせてVLOOKUPの代わりにする

VLOOKUPの代わりにINDEX+MATCHを使う場合、次のように組み合わせます。

📌 基本の形

=INDEX(取り出したい列, MATCH(検索値, 検索列, 0))

🎯 例:「名前」から「部署」を検索する

A列(ID) B列(名前) C列(部署)
1001 佐藤 営業
1002 田中 総務
1003 鈴木 開発

「田中」の「部署(C列)」を検索したい場合

=INDEX(C2:C4, MATCH("田中", B2:B4, 0))

MATCH(“田中”, B2:B4, 0) の部分が「田中は何行目?」を探し、INDEXがその行のC列を返す!

結果 👉 「総務」 🎉

3️⃣ INDEX+MATCHがVLOOKUPより優れている理由

① 検索範囲の1列目の制約なし!
VLOOKUPは「検索範囲の1列目」からしか検索できませんが、INDEX+MATCHなら どの列からでも検索OK!

② 列の挿入・削除に強い!
VLOOKUPは「列番号」を指定しますが、データが変わるとズレます。
INDEX+MATCHは「列の番号」ではなく「検索範囲」を指定するので、データが変わっても壊れません。

③ 左側のデータを検索できる!
VLOOKUPは「右方向」しか検索できませんが、INDEX+MATCHなら「左方向」にも検索できます!

4️⃣ INDEX+MATCHの応用テクニック

🔹 横方向の検索(MATCHの列番号取得)

VLOOKUPは 「横方向の検索」 ができませんが、INDEX+MATCHなら可能です!

=INDEX(A1:D3, MATCH("田中", A1:A3, 0), MATCH("部署", A1:D1, 0))

MATCHで 行番号と列番号を両方取得 し、INDEXでデータを取り出します。
これで、行・列どちらの変更にも強い検索ができます!

5️⃣ XLOOKUP(Excel 2019以降)ならもっと簡単!

Excelの新しい関数 XLOOKUP は、INDEX+MATCHと同じようなことを よりシンプルに できます。

=XLOOKUP("田中", B2:B4, C2:C4)

✅ VLOOKUPの「検索範囲の1列目」制約なし!
左方向の検索も可能!
近似一致(TRUE)のミスが起こらない!

もし Excel 2019 / 365 を使っているなら、XLOOKUPが最も便利です!

🔹 まとめ

💡 VLOOKUPの限界を克服するなら「INDEX+MATCH」!
💡 Excel 2019以降なら「XLOOKUP」が最強!

関数 左方向検索 列の挿入に強い 柔軟性 シンプルさ
VLOOKUP ❌ 不可 ❌ 弱い 😐 普通 😊 簡単
INDEX+MATCH ✅ 可能 ✅ 強い ✅ 高い 😐 やや難しい
XLOOKUP ✅ 可能 ✅ 強い ✅ 高い 😊 簡単

VLOOKUPを使っていると、「あれ、動かない…」と悩むことがよくあります。
INDEX+MATCHを使いこなせば、より自由にデータを検索でき、Excel作業がスムーズに! 🚀

「VLOOKUPで困ったら、INDEX+MATCHを試してみましょう!」

Follow me!

コメント

PAGE TOP
タイトルとURLをコピーしました