VLOOKUPがうまくいかない・反映されない原因と直し方|あるのに#N/Aになるときの確認方法

VLOOKUPがうまくいかない・反映されない原因と直し方|あるのに#N/Aになるときの確認方法

VLOOKUP 関数で、表にあるはずの値なのに #N/A になる、違う値が返ってくる、値を変えても結果が反映されない。こうしたときは、式の書き方よりも「表の中身」や「設定」に原因があることがほとんどです。

この記事では、VLOOKUP がうまくいかない原因を実際の Excel で1つずつ再現し、どこを見れば見分けられるか、どう直すかを説明します。

練習用Excelファイル(無料ダウンロード)
「原因と症状」「直し方」「式がそのまま」「コピーでずれる」の4シートです。式を書き換えて試せます。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
目次

VLOOKUPがうまくいかない原因の早見表

症状原因直し方
あるのに #N/A数値と文字が混ざっている探す値を &"" で文字にする・表をそろえる
あるのに #N/A後ろや前に空白がある・全角と半角が違うTRIM で空白を除く・表記をそろえる
#N/A探す列が範囲の左端にない範囲の左端を探す列にする・XLOOKUP を使う
#REF!列番号が範囲の列数より大きい範囲の左端を1として数え直す
違う行の値が返る4つ目の引数を省略した(近似一致)4つ目に FALSE を入れる
下へコピーすると #N/A範囲に $ が付いていない範囲を $A$2:$C$5 のように固定する
値を変えても変わらない計算方法が「手動」になっている計算方法を「自動」に戻す
式がそのまま表示されるセルの表示形式が「文字列」表示形式を「標準」にして入れ直す

あるのに#N/Aになる・違う値になる例

コードと単価の表から VLOOKUP で単価を探します。101 は正しく 120 が返りました。ところが、表に 103 も A05 もあるのに #N/A になりました(③)。

エクセルのVLOOKUPがうまくいかない原因を再現した例(数値と文字・空白・左端・列番号・近似一致)
エクセルのVLOOKUPがうまくいかない原因を再現した例(数値と文字・空白・左端・列番号・近似一致)

数値と文字が混ざっている

表の 103 は「文字」として入っています(①、セルの左上に緑の三角が付き、左に寄っています)。探す値の 103 は「数値」なので、見た目は同じでも別のものとして扱われ #N/A になります。CSV やほかのシステムから貼り付けた表でよく起こります。

後ろに空白がある・全角と半角が違う

表の A05 は、後ろに空白が1つ入った「A05 」です(②)。見た目では分かりませんが、”A05″ では一致しません。試したところ、全角の「A05」でも #N/A になりました。一方、大文字と小文字は区別されず、”a05 ” でも見つかりました。

探す列が左端にない・列番号が大きすぎる

VLOOKUP は、範囲のいちばん左の列だけを探します。商品名「みかん」は B 列にあるので、範囲を A 列から始めると見つからず #N/A です。また、範囲が A〜C の3列なのに列番号を 4 にすると #REF! になります(エラー値の一覧と直し方)。

4つ目の引数を省略している

4つ目を省略すると「近似一致」になり、ぴったりの値が無くても近い行の値が返ります。102.5 を探したら、エラーにならずに 102 の行の 80 が返りました(④)。間違いに気付きにくいので、ふつうは必ず FALSE を入れます。

原因別の直し方

エクセルのVLOOKUPがうまくいかないときの直し方(文字にして探す・TRIMで空白を除く・XLOOKUPで左の列)
エクセルのVLOOKUPがうまくいかないときの直し方(文字にして探す・TRIMで空白を除く・XLOOKUPで左の列)
原因直した式結果
数値と文字=VLOOKUP(103&"",$A$2:$C$5,3,FALSE)300
後ろの空白=XLOOKUP("A05",TRIM($A$2:$A$5),$C$2:$C$5)250
探す列が左端にない=XLOOKUP("みかん",$B$2:$B$5,$A$2:$A$5)102

探す値に &"" を付けると、数値の 103 が文字の “103” になり、表の文字の 103 と一致しました。反対に、表が数値で探す値が文字のときは、探す値を -- や VALUE 関数で数値にします。

表の側に空白があるときは、TRIM で表の空白を除いてから探します。VLOOKUP の範囲には TRIM を付けにくいので、XLOOKUP(Microsoft 365・Excel 2021 以降)を使うと1つの式で書けます。表そのものを直せるなら、置換で空白を消すほうが確実です(全角と半角は 全角・半角を変換する方法)。

左の列を取り出したいときも、XLOOKUP なら探す列と返す列を別々に指定できます(XLOOKUPの使い方まとめ)。

下へコピーすると#N/Aが増える

1行目では正しく動くのに、式を下へコピーすると #N/A が出ることがあります。範囲に $ が付いていないと、コピーした行に合わせて範囲もずれるためです。

エクセルのVLOOKUPを下へコピーすると範囲がずれて#N/Aになる例
エクセルのVLOOKUPを下へコピーすると範囲がずれて#N/Aになる例

4行目の式は、範囲が A4:C7 にずれていました(①)。101 と 102 は範囲の外になったので #N/A です(②)。範囲を $A$2:$C$5 と固定した G 列は、どの行も正しく返りました(③)。範囲を選んだあと F4 キーを押すと $ が付きます(絶対参照・相対参照とは)。

VLOOKUPが反映されない・式がそのまま表示される

値を変えても結果が変わらない

表の単価を変えても VLOOKUP の結果が古いままなら、計算方法が「手動」になっています。試したところ、手動のときは単価を 120 から 999 に変えても 120 のままで、自動に戻すと 999 になりました。[数式]タブの[計算方法の設定]で[自動]を選びます。手動のまま今すぐ計算し直すときは F9 キーを押します。

式が文字のまま表示される

エクセルでセルの書式が文字列のためVLOOKUPの式がそのまま表示される例
エクセルでセルの書式が文字列のためVLOOKUPの式がそのまま表示される例

セルの表示形式が「文字列」だと、入力した式が計算されず、そのまま表示されます(①)。表示形式を「標準」に変えたあと、セルを選んで F2 キー → Enter で入れ直すと計算されます。どちらも、手順を画像付きで 数式が反映されない・計算されない原因と対処で説明しています。

よくある質問

#N/A の代わりに空白や「該当なし」を表示したいときは?

原因を直したうえで、本当に表に無い値は IFERROR で置き換えます。=IFERROR(VLOOKUP(E2,$A$2:$C$5,3,FALSE),"該当なし") のように書きます(IFERROR関数の使い方)。原因を確かめる前に IFERROR で隠すと、間違いに気付けなくなるので注意します。

空白のセルを取り出すと 0 になるのはなぜ?

VLOOKUP の仕様です。空白のままにする式は VLOOKUPで0を表示しない・空白なら空白にする方法で説明しています。

VLOOKUP の基本の使い方は?

エクセルのVLOOKUPの使い方で、書き方・複数条件・別シートをまとめています。練習したいときは VLOOKUP関数の練習問題もどうぞ。

練習用Excelファイル(無料ダウンロード)
この記事の例がすべて入った練習用のファイルです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

あわせて読みたい:VLOOKUPの関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次