VLOOKUPが「#N/A」になるときに見る3つの場所

記事
IT・テクノロジー
商品コードや社員番号で別の表から名前を引いてくる VLOOKUP。式は合っているはずなのに「#N/A」が出て止まってしまう、という相談はとても多いです。
原因の多くは式ではなく「データの見た目では分からない違い」です。今日は、まず見てほしい3つの場所と、その直し方をまとめます。

例として、次のような表を使います。

(表の例)
A001 りんご
A002 みかん
1003 ぶどう
A004 もも

探す式はこれです(D2 に探したいコード)。

=VLOOKUP(D2,$A$2:$B$5,2,FALSE)

■1. 見えない空白が付いていないか

「A001」と「A001 」(後ろに空白)は、画面ではほぼ同じに見えますが、VLOOKUP は別の文字として扱います。コピー&ペーストで持ってきたデータによく混じります。

確かめ方は LEN 関数です。=LEN(A5) が、見えている文字数より多ければ空白が混じっています。

直し方は、探す側なら TRIM で空白を取ってから探します。

=VLOOKUP(TRIM(D2),$A$2:$B$5,2,FALSE)

表の側に空白が付いているときは、表の横に =TRIM(A2) の列を作り、その列を探す範囲にします。元データを直せるなら、それがいちばん確実です。

■2. 数字が「数値」と「文字」で混ざっていないか

「1003」が表では文字として、探す側では数値として入っていると、同じ 1003 でも一致しません。左寄せ・右寄せが違っていたら、この可能性が高いです。

探す側を文字にそろえるには、後ろに &"" を付けます。

=VLOOKUP(D2&"",$A$2:$B$5,2,FALSE)

空白と両方が心配なときは TRIM(D2&"") とまとめても大丈夫です。

■3. 最後の「FALSE」を省いていないか

4つ目の引数を省くと「だいたい合っているもの」を探す動き(近似一致)になります。表がコード順に並んでいないと、エラーではなく別の行の値が返ることがあります。#N/A よりも気づきにくいので、コードで探すときは必ず FALSE を付けてください。

■見つからないときの表示を整える

本当に表に無いコードもあります。そのときに #N/A のままだと集計が止まるので、IFERROR で文字に置きかえておくと扱いやすくなります。

=IFERROR(VLOOKUP(TRIM(D2&""),$A$2:$B$5,2,FALSE),"見つからない")

ただし、これを最初から付けると、上の1〜2の原因まで「見つからない」で隠れてしまいます。まず1〜3を確かめてから、最後に付けるのがおすすめです。

■まとめ

- 見えない空白 → LEN で確かめて TRIM
- 数値と文字の混在 → &"" でそろえる
- 4つ目の引数 → コードで探すなら必ず FALSE

上の式は、手元で見本の表を作り、計算ツール(Excel 形式で計算するもの)で結果を確かめています。Google スプレッドシートでも同じ書き方で使えますが、そちらの画面では確かめていません。

――――

「自分の表だとどう直せばいいか分からない」という方向けに、スプレッドシートの関数や GAS を1つお作りするサービスを出しています。動かして確かめてからお渡しします。

※この記事は生成AI(Claude)を使って書き、式は手元で計算して確かめました。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す