商品マスタから VLOOKUP で商品名を引いてきたら、#N/A がずらっと…。マスタを見ると、ちゃんと同じコードがあるのに!ということ、ありませんか?(´・ω・`)
#N/A は「探した値が、範囲のいちばん左の列に見つからなかった」という意味です。本当に登録がないとき以外は、ほとんどが「数値と文字の違い」「空白」「全角と半角」「範囲のずれ」「探す列の位置」のどれかでした。
この記事では、注文表に商品マスタから商品名と単価を引く例で、実際に #N/A を出して、原因を1つずつ確かめてみました。直し方も、全部試して結果が出たものだけを載せています💡
🎬 実際の Excel 画面で、#N/A を1つずつ出して直している動画もあります(5分くらい)。文章より画面で見たいときは、こちらからどうぞ♪
実際に出た #N/A:8件中4件!
商品マスタ(7件)を用意して、注文表の B2 にこの式を入れ、下にコピーしました。

=VLOOKUP(A2,商品マスタ!$A$2:$C$8,2,FALSE)

見た目ではマスタにあるはずのコードが、なんと4件も見つかりませんでした(>_<) ここから、原因ごとに見ていきますね。
まずは見分け方:3つの式で原因をしぼる
いきなり直す前に、空いているセルにこんな式を入れて調べると早いです。同じコードのはずのセルどうしを比べます。

=A3=商品マスタ!A2:見た目が同じでも FALSE なら、Excel は「別の値」だと思っています=ISTEXT(A3)と=ISTEXT(商品マスタ!A2):片方だけ TRUE なら「数値と文字の違い」。サンプルでは注文側が FALSE(数値)、マスタ側が TRUE(文字)でした=LEN(商品マスタ!A8):「C-401」は5文字のはずなのに 6 と出たら、空白などの見えない文字が入っています
原因1:本当に登録がない
A-205 はマスタにありません。これは正しい #N/A です。表が #N/A だらけにならないよう、IFNA で文字に置き換えておきましょう。
=IFNA(VLOOKUP(A5,商品マスタ!$A$2:$C$8,2,FALSE),"未登録")
原因2:数値と文字の違い(101 と “101”)
マスタの 101 は「文字列」として登録されていて(セルに「数値が文字列として保存されています」という緑の三角が付いていました)、注文表の 101 は「数値」です。見た目は同じでも、VLOOKUP は別物として扱って #N/A になりました。逆の組み合わせ(マスタが数値、注文が文字)でも #N/A でした。
とりあえず直すなら、検索する値の形を相手に合わせます。
マスタが文字のとき: =VLOOKUP(A3&"",商品マスタ!$A$2:$C$8,2,FALSE)
マスタが数値のとき: =VLOOKUP(VALUE(A3),商品マスタ!$A$2:$C$8,2,FALSE)
原因3:後ろに空白が入っている
マスタの「C-401」の後ろに空白が1つ入っていて(LEN で6文字)、注文表の「C-401」と一致しませんでした。空白は画面ではまったく見えないので、いちばん気づきにくい原因です。
- マスタ側に空白があるとき:マスタのセルを TRIM で掃除する(空いた列に
=TRIM(A8)と入れて、値だけ貼り付けて戻す)。掃除したあとは「封筒」が正しく出ました - 注文側に空白があるとき:
=VLOOKUP(TRIM(A2),…)のように検索値を TRIM で包む。「A-201 」(後ろに空白)で #N/A になったものが、これで「トナー黒」になりました
原因4:全角と半角の違い(B-301 と B-301)
注文表に全角の「B-301」と入っていたせいで、マスタの半角「B-301」が見つかりませんでした。一方で、小文字の「a-202」は「A-202」と同じものとしてちゃんと見つかったんです。
つまり、VLOOKUP は大文字・小文字は区別しないけれど、全角・半角は区別するということですね。
VLOOKUP のまま直すなら、検索値を ASC 関数で半角にしてから探します。下の完成形の式に入れてあります。
原因5:範囲に $ を付け忘れて、コピーでずれた
範囲を 商品マスタ!A2:C8($ なし)のまま下へコピーすると、1行下がるごとに範囲も1行ずつ下にずれていきます。7行目の式は 商品マスタ!A7:C13 を探していて、上のほうにある商品が見つからなくなっていました。

範囲は $A$2:$C$8 のように $ を付けて固定します。範囲を選んだあとに F4 キーを1回押すと付きますよ。
原因6:探したい列が範囲のいちばん左にない
VLOOKUP は、範囲のいちばん左の列しか探しません。商品名「トナー黒」からコードを引こうとして、範囲を A〜C 列のままにしたら #N/A になりました。
Microsoft 365 や Excel 2021 以降なら、XLOOKUP が便利です。探す列と返す列を別々に指定できるので、左側の列も返せます♪
=XLOOKUP(A12,商品マスタ!$B$2:$B$8,商品マスタ!$A$2:$A$8,"未登録")
これで「A-201」が返ってきました。ちなみに、XLOOKUP に替えると直る原因と直らない原因があったので、同じマスタで試した結果も書いておきますね。
- 原因4(全角の「B-301」):XLOOKUP では見つかりました(「クリアファイル」が返った)
- 原因2(数値の 101 と文字の “101”)と原因3(後ろの空白):XLOOKUP でも #N/A のままでした
数値と文字の違いや空白は、関数を替えても直らないので、値のほうをそろえる必要があります。
#N/A より危ない:4つ目の引数の省略
最後に、#N/A は出ないけれど、もっと危ないパターンです⚠️
4つ目の引数(FALSE)を省くと「近似一致」になります。試してみたら、マスタにない「A-205」も「B-300」も、エラーにならずに「トナーカラー」と返ってきました。

#N/A なら気づけますが、それらしい間違った値には気づけません。コードや名前で探すときは、必ず FALSE(または 0)を付ける、これだけは覚えておいてください!
完成形:原因2〜4をまとめて防ぐ式
マスタのコード列を「文字列」にそろえて空白を消しておいたうえで、注文表にはこの式を入れました。
商品名: =IFNA(VLOOKUP(TRIM(ASC(A2&"")),商品マスタ!$A$2:$C$8,2,FALSE),"未登録")
単価: =IFNA(VLOOKUP(TRIM(ASC(A2&"")),商品マスタ!$A$2:$C$8,3,FALSE),"")

A2&"":数値で入力されたコードも文字にする(マスタが文字なので合わせる)ASC(…):全角の英数字を半角にするTRIM(…):前後の空白を消す
本当に未登録の A-205 以外、ぜんぶ表示されました✅
サンプルファイルはこちら
「注文」シートは完成形の式、「商品マスタ」は直したあとのマスタです。「直す前のマスタ」「範囲ずれ」シートで、#N/A が出る状態を試せます。データはすべて架空です。
マクロは入っていません。ダウンロードしたファイルが「保護ビュー」で開いたら、「編集を有効にする」を押すと式が動きます。
#N/A が出たら、まずは「見分け方」の3つの式から試してみてください。原因がわかれば、直すのはすぐですよ😊
この記事の式は、Microsoft 365 の Excel(ビルド 16.0.20527.20150、Windows 11)で、2026年11月8日にすべて試しました。
マスタの整理や、転記・照合の作業をまとめて自動化したい場合は、ココナラで Excel の自動化のご依頼も受けています。


