VLOOKUPの数式を入れたのに、セルに表示されるのは「#N/A」の文字。
これ、Excelを仕事で使っている人なら一度はぶつかる”あるある“だと思います。
「さっきまで動いてたのに急に…」「数式はコピペしただけなのに…」と焦る気持ち、よくわかります。
でも安心してください。#N/Aエラーの原因はだいたい5パターンに絞られます。
この記事では、よくある原因を順番にチェックしていくだけで、ほとんどのケースが5分以内に解決できるようにまとめました。
そもそも#N/Aエラーって何?
#N/Aは「Not Available(該当なし)」の略で、
ざっくり言うと「探したけど見つかりませんでした」というExcelからのメッセージです。
つまり、数式そのものが間違っているわけではなく、
「探し方」か「探す場所」か「探す対象」のどこかにズレがあるということです。
ここを押さえておくと、原因の切り分けがグッとラクになります。
原因① 検索値にスペースや見えないゴミが入っている
一番多いのがこれです。
見た目はまったく同じなのに、
セルの中に半角スペースや改行コードなどの「見えないゴミ」が紛れ込んでいるケースです。
たとえば、検索値のセルA2に「 東京都」と入っていて、先頭に半角スペースが1つ入っていたとします。
参照先の表には「東京都」と正しく入っている。
人間の目には同じに見えますが、Excelは「 東京都」と「東京都」を別モノとして判定するので、
#N/Aが返ってきます。
こういうときは、TRIM関数とCLEAN関数を組み合わせてゴミを除去するのが定番です。
=VLOOKUP(TRIM(CLEAN(A2)),B:D,3,FALSE)BashTRIM関数は前後のスペースを除去、CLEAN関数は改行コードなどの制御文字を除去してくれます。
この2つをセットで使うのがおすすめです。
原因② 文字列と数値の「型」が合っていない
これも非常によくあるパターンです。見た目は同じ「1001」でも、片方が数値の1001、もう片方が文字列の”1001″だった場合、VLOOKUPは一致とみなしません。
確認方法はシンプルで、セルを選択してホームタブの「表示形式」欄を見てください。「標準」や「数値」になっているか、「文字列」になっているかで判断できます。もうひとつの見分け方として、数値はセル内で右寄せ、文字列は左寄せで表示されるという違いもあります。
型を揃える方法はいくつかありますが、手っ取り早いのはVALUE関数で文字列を数値に変換する方法です。
=VLOOKUP(VALUE(A2),B:D,3,FALSE)Bash逆に、参照先が文字列で統一されているなら、TEXT関数で数値を文字列に変換するやり方もあります。
=VLOOKUP(TEXT(A2,"0"),B:D,3,FALSE)Bash原因③ 検索範囲の列指定がズレている
VLOOKUPは「検索範囲の一番左の列」から検索値を探す、というルールがあります。ここを忘れていると、正しいデータがあるのに#N/Aになります。
たとえば、社員番号がB列、氏名がC列、部署がD列にある表で、社員番号から部署を引きたいとします。
NG例として、検索範囲をC:D(氏名〜部署)にしてしまうと、Excelは氏名の列から社員番号を探そうとするので見つかりません。
NG:=VLOOKUP(A2,C:D,2,FALSE)<br>OK:=VLOOKUP(A2,B:D,3,FALSE)BashOK例のように、検索範囲は必ず「検索値がある列」を左端に含めるようにしてください。列番号もそこから数えて何列目か、で指定します。
原因④ 検索の型(第4引数)の指定ミス
VLOOKUPの第4引数は「検索の型」を指定する部分で、FALSEが完全一致、TRUEが近似一致です。
ここを省略すると、初期値はTRUE(近似一致)になります。近似一致は、参照先のデータが昇順に並んでいることが前提のモードなので、並び替えされていないデータに対して使うと、意図しない値が返ったり#N/Aになったりします。
業務で使う場面の大半は完全一致だと思いますので、迷ったらとりあえずFALSEを入れておけば間違いありません。
NG:=VLOOKUP(A2,B:D,3)<br>OK:=VLOOKUP(A2,B:D,3,FALSE)Bash第4引数を「書き忘れていた」というだけで#N/Aが出ているケースは意外と多いので、まずここを確認してみてください。
原因⑤ そもそもデータが存在しない(表記揺れ)
ここまで全部チェックしても解決しない場合、そもそも探しているデータが参照先の表に存在しない可能性があります。
ありがちなのが表記揺れです。たとえば検索値が「(株)サンプル商事」なのに、参照先では「株式会社サンプル商事」と登録されている、といったケースです。他にも全角・半角の違い(「ABC」と「ABC」)や、旧字体と新字体の違いなどもよくある原因です。
この場合は数式では解決できないので、元データの表記を統一するのが根本的な対処になります。Ctrl+Hの置換機能で一括変換するのが手軽です。
エラーを非表示にしたいときはIFERROR関数
原因の特定と修正が先ですが、「どうしても#N/Aが残るセルがある」「まだデータが届いていない行がある」というケースもあると思います。
そんなときは、IFERROR関数でエラー表示を回避できます。
=IFERROR(VLOOKUP(A2,B:D,3,FALSE),"該当なし")Bashこれで、エラーのときは「該当なし」と表示され、正常なときは通常の検索結果が返ります。空欄にしたい場合は「該当なし」の部分を””(空文字)にすればOKです。
ただし注意点として、IFERRORはエラーを「隠す」だけなので、根本原因を放置したまま使うと、データの間違いに気づけなくなるリスクがあります。あくまで応急処置として使い、原因の修正が終わったあとの仕上げとして入れるのがおすすめです。
まとめ
VLOOKUPの#N/Aエラーが出たら、以下の順番でチェックしてみてください。
- 検索値にスペースや見えないゴミが入っていないか → TRIM・CLEANで除去
- 検索値と参照先で数値・文字列の型が揃っているか → VALUE・TEXTで変換
- 検索範囲の左端が検索値の列になっているか → 範囲と列番号を見直す
- 第4引数にFALSEを指定しているか → 省略していたら追加
- 表記揺れや全角半角の違いがないか → 元データを統一
上から順にチェックしていけば、ほとんどのケースは5分以内に原因が見つかるはずです。
焦らず一つずつ確認していきましょう。