#N/Aエラーが出る原因と対処法(VLOOKUP編)

VLOOKUPで商品コードから単価を引いてきたいのに、#N/Aと表示されて値が取れない。コードは合っているように見えるのに、という場面はよくあります。結論から言うと、#N/Aエラーは「検索した値が、検索範囲の中に見つからなかった」ことを意味します。この記事では、見た目は合っているのに見つからない典型パターン、原因の特定方法、エラーを表示させない書き方まで解説します。

目次

#N/Aエラーが出る基本の原因

#N/A(No Assign=該当なし、の意味)は、VLOOKUPやMATCHのような「探す」関数が、指定された検索値を検索範囲の中で見つけられなかったときに返すエラーです。数式の書き方が間違っているのではなく、探した結果、本当に無かったという事実を伝えている点が他のエラーと異なります。つまり、直すべきなのは多くの場合、数式ではなくデータのほうです。

具体例:VLOOKUPで商品コードから単価を引く

次のような商品マスタ(A1:C6)があるとします。A列が商品コード、B列が商品名、C列が単価です。

A(商品コード) B(商品名) C(単価)
2 A-101 ボールペン 120
3 A-102 ノート 250
4 B-201 クリアファイル 80
5 B-202 ふせん 180
6 C-301 マーカー 150

別のセルE2に検索したい商品コードを入力し、対応する単価を取得するとします。A列が商品コード、C列が単価で、単価はA列から数えて3列目にあたるので、次のように書きます。

=VLOOKUP(E2,$A$2:$C$6,3,FALSE)

E2に入力されたコードを、A列(商品コード)の中から完全一致で探し、見つかった行の3列目(C列=単価)を取り出す、という意味の数式です。E2が「B-201」であればクリアファイルの単価80円が返ります。

ところが、E2に「B-205」のようにマスタに存在しないコードを入れると、探しても見つからないため#N/Aになります。ここまでは納得しやすいのですが、実務で厄介なのは「見た目は合っているのに見つからない」ケースです。

見た目は合っているのに#N/Aになる4つのパターン

  • 前後に余分なスペースが入っている: 他システムからコピーしたデータには「B-201 」のように末尾に空白が残っていることがあります。画面上は見分けがつきませんが、Excelは別の文字列として扱います。
  • 数値と文字列が混ざっている: 検索値が数値の101で、マスタ側が文字列の「101」(またはその逆)の場合、見た目が同じでも一致しません。セルの左寄せ・右寄せの違いが手がかりになります。
  • 全角と半角が混ざっている: 「A-101」と「A-101」は別物です。ハイフンの種類(-と-)の違いも同様です。
  • 検索範囲がコピーでずれた: 検索範囲を$A$2:$C$6のように絶対参照にしていないと、数式を下方向にコピーしたときに範囲がA3:C7、A4:C8……とずれ、探すべき行が範囲から外れて#N/Aになります。

#N/Aエラーの原因を特定する方法

  • 検索値の文字数を数えてみる: LEN関数で検索値とマスタ側の文字数を比べると、余分なスペースの有無がすぐ分かります。「B-201」なら5文字のはずが6文字になっていれば空白混入です。
  • スペースを取り除いて検索する: TRIM関数を挟んで=VLOOKUP(TRIM(E2),$A$2:$C$6,3,FALSE)と書けば、前後の空白による不一致は解消できます。
  • 数値か文字列かを判定する: ISNUMBER関数で検索値とマスタ側の型を確認します。片方だけTRUEなら型違いが原因です。
  • 検索範囲を絶対参照に直す: 範囲を選択した状態でF4キーを押すと$A$2:$C$6の形に切り替わります。

#N/Aを表示させない書き方

原因を潰したうえで、それでも「該当なし」が起こりうる場合は、エラーのまま見せずに分かりやすい表示に置き換えます。もっとも手軽なのはIFERRORで包む方法で、書き方はVLOOKUPとIFERRORを組み合わせてエラー表示を防ぐ方法で詳しく解説しています。

ただし、#N/Aだけを扱いたい場合はIFNA関数のほうが適しています。A列が商品コード、C列が単価のマスタに対して、次のように書きます。

=IFNA(VLOOKUP(E2,$A$2:$C$6,3,FALSE),"該当なし")

VLOOKUPの結果が#N/Aのときだけ「該当なし」と表示し、それ以外のエラーはそのまま表示する、という意味の数式です。IFERRORはすべてのエラーを同じ扱いで隠してしまうため、範囲の指定ミスによる#REF!エラーのような「隠してはいけないエラー」まで見えなくなります。この違いは実務でかなり効きます。

なお、Excel 2021・Microsoft 365以降であれば、XLOOKUPで複数条件に一致するデータを検索する方法で紹介しているXLOOKUPが使えます。XLOOKUPは「見つからない場合」を第4引数で直接指定できるため、IFERRORやIFNAで包む必要がありません。

よくあるエラー・注意点

  • 第4引数を省略すると別の問題が起きる: VLOOKUPの第4引数を省略またはTRUEにすると近似一致になります。この場合は検索範囲の1列目が昇順に並んでいることが前提で、並んでいないと#N/Aにならずに間違った値を返すことがあります。エラーが出ない分こちらのほうが危険なので、完全一致で探すときは必ずFALSEを指定しましょう。
  • 検索列より左の列は取得できない: VLOOKUPは検索範囲の1列目を検索し、そこから右方向の列しか取り出せません。左側の値が欲しい場合は#N/Aではなく設計自体を見直し、XLOOKUPやINDEX+MATCHに置き換えます。
  • IFERRORで隠すのは最後の手段: 本来一致するはずのデータが取れていないのにIFERRORで空欄にしてしまうと、集計結果が静かに狂います。まず原因を特定し、それでも「該当なしが正常」な場合にだけ使いましょう。
  • マスタ側の重複にも注意: 同じ商品コードがマスタに2行あっても#N/Aにはならず、上にある行だけが採用されます。エラーが出ないため気付きにくいパターンです。

まとめ

#N/Aエラーは「探したけれど見つからなかった」という意味で、多くの場合は数式ではなくデータ側の空白・全角半角・型違いが原因です。LENやISNUMBERで原因を特定し、TRIMや絶対参照で潰したうえで、残る「該当なし」だけをIFNAで整えるのが安全な手順です。数式の参照先そのものが消えて起こる#REF!エラーの原因と直し方や、文字列と数値が混ざって計算できなくなる#VALUE!エラーの原因と直し方もあわせてご覧ください。

目次