「この数値、合ってる?」
部長にそう言われた瞬間、背中が一気に冷たくなりました。
月次売上の報告資料。
売上データと顧客マスタをVLOOKUPで結び、単価と顧客名を表示させる。
いつも通りの作業のはずでした。
ところが、一部のセルだけ「#N/A」。
会議まであと20分。
なぜか分からない。式も合っているはず。
何度見直しても原因が見つからない。
この経験、ありませんか?
実はVLOOKUPの#N/Aは、難しいバグではありません。
ほとんどの場合、“単純なズレ”が原因です。
今回は、実務で本当によくある原因を3つ、具体例付きで解説します。
原因①:見えないスペースが入っている
一番多い原因が「スペース」です。
例えば、売上データ側が
A001␣(後ろにスペースあり)
顧客マスタ側が
A001(スペースなし)
見た目は同じです。
しかしExcelは、これを別の文字列として扱います。
試しに次のように入力してみてください。
A1:A001␣(最後にスペース)
A2:A001
A3:=A2=B2
結果は「FALSE」になります。
たった1つのスペースで一致しません。

特に注意が必要なのは、
・他システムからコピペしたデータ
・CSV取り込みデータ
・外部から送られてきた一覧
です。
対処法はシンプルです。
=TRIM(A2)
これで前後の余計なスペースを削除できます。
焦っていると基本を忘れます。
まずは「スペース」を疑う。これが第一歩です。
原因②:TRUE(近似一致)のままになっている
次によくあるのが、引数の設定ミスです。
=VLOOKUP(D2, A2:B4, 2, TRUE)
このTRUEは「近い値を探す」という意味です。
例えば、次の表を用意します。
A列(品番) | B列(単価)
1001 | 500
1005 | 800
1010 | 1200
D2に「1002」と入力します。
D3に
=VLOOKUP(D2, A2:B4, 2, TRUE)
D4に
=VLOOKUP(D2, A2:B4, 2, FALSE)
と入力すると、
TRUE → 500
FALSE → #N/A
になります。

TRUEは「1002に一番近い小さい値(1001)」を拾います。
品番や社員番号でこれをやると、
“間違った数字が正しく表示される”という一番怖い状態になります。
実務では、ほぼ確実にFALSEを使います。
=VLOOKUP(A2, B2:C4, 2, FALSE)
この設定を確認するだけで、エラーは一気に減ります。
原因③:参照範囲が古いまま
地味ですが、非常に多いのがこれです。
列を追加したのに、
VLOOKUPの範囲を修正していない。
例えば元の式が
=VLOOKUP(E2, A2:B4, 2, FALSE)
だったとします。
途中でE列を追加したのに、
範囲がA2:B4のまま。
この状態では正しい列を参照できません。
特に、
・途中で列を挿入した
・並び替えをした
・コピーして使い回している
場合は要注意です。
「列を追加したら、範囲を確認する」
これを習慣にするだけで、会議前の事故は激減します。

応急処置としてのIFERROR
よくあるのが、
=IFERROR(VLOOKUP(…), “”)
でエラーを消す方法です。
確かに見た目は整います。
しかしこれは、原因を隠しているだけです。
エラーは敵ではありません。
「どこかがズレていますよ」というサインです。
まずは根本原因を確認しましょう。
あのとき学んだこと
会議前に焦ったあの日以降、私は順番を決めました。
① スペース確認
② FALSE設定確認
③ 範囲確認
この3つを機械的にチェックする。
それだけで、VLOOKUPで固まることはなくなりました。
Excelは難しくありません。
怖いのは「思い込み」です。
#N/Aが出たら、焦らず確認。
・スペース
・TRUE / FALSE
・範囲ズレ
まずはこの3つを疑ってみてください。
それが、怒られないExcelの第一歩です。





コメント