業務効率化

IFERRORでVLOOKUPの #N/A を「未登録」に変える|該当なしをきれいに処理

ExcelMate編集部6分

この記事の要点

  • VLOOKUPがマスタにないコードで返す #N/A は、IFERROR関数で包めば「未登録」や空白など好きな表示に置き換えられる
  • 数式は =IFERROR(VLOOKUP(…), "未登録")。VLOOKUP全体を第1引数に入れ、エラー時に出したい値を第2引数に書く
  • #N/A だけを消したいなら IFNA、入力ミスや型違いのエラーもまとめて消したいなら IFERROR と使い分ける

VLOOKUPで単価や名称を転記していると、マスタに無いコードの行に #N/A というエラーがずらりと並ぶことがあります。新商品のコードがまだマスタに登録されていない、入力した型番が1文字違う——よくある場面です。

このエラー表示は、IFERROR 関数でVLOOKUPを包むだけで「未登録」や空白などのわかりやすい表示に変えられます。一覧の印刷や、その先の集計(SUMなど)も崩れません。実際の画面で見ていきましょう。

完成イメージ

検索コードから商品名・単価を転記する一覧です。マスタに無い Z-999 の行だけ、#N/A の代わりに「未登録」と表示されています。

IFERROR関数でVLOOKUPを包み、商品マスタに無いコードを未登録と表示したExcel画面。C2セルにIFERROR(VLOOKUP)の数式を入力し、Z-999の行だけが未登録と表示されている
C2 に入力した数式と、その結果(マスタに無い Z-999 は #N/A ではなく「未登録」に)

数式の意味

単価のセルに入れているのは、次の数式です。

=IFERROR(VLOOKUP(A2, マスタ!$A:$C, 3, FALSE), "未登録")

IFERROR は「中の数式がエラーになったら、別の値を代わりに返す」関数です。引数は2つだけです。

  1. 第1引数(VLOOKUP(...))… 普段どおりのVLOOKUP。VLOOKUP全体をそのまま入れます
  2. 第2引数("未登録")… 第1引数がエラーになったときに表示する値。空白にしたいなら ""

つまり「VLOOKUPで引けたらその値を、引けずにエラーになったら『未登録』を表示する」という指示です。商品名の列も同じく =IFERROR(VLOOKUP(A2, マスタ!$A:$C, 2, FALSE), "未登録") のように包みます。

つまずきやすいポイント①:IFERROR と IFNA の使い分け

よく似た関数に IFNA があります。違いは「どのエラーを消すか」です。

  • IFERROR … #N/A だけでなく、#VALUE! や #REF! などすべてのエラーを置き換える
  • IFNA#N/A だけを置き換える。数式の組み間違い(#VALUE! など)はそのまま表示される

「該当なし」だけをきれいにしたいのに、数式のミスまで隠れてしまうと原因に気づけません。原因を見落としたくないなら IFNA、型違いや空白由来のエラーもまとめて消したいなら IFERROR、と覚えておくと安全です。

つまずきやすいポイント②:先にVLOOKUP単体で動かす

いきなりIFERRORで包むと、本当はマスタにあるのに引けていないケースまで「未登録」で隠れてしまいます。まずはVLOOKUP単体で表示し、正しく引けることを確認してからIFERRORで包むのがおすすめです。表記ゆれ(全角半角・前後の空白)が原因のことも多いので、検索値とマスタの値が完全一致しているかを先に確認します。

よくあるエラーと対処

  • 全部が「未登録」になる … VLOOKUPの参照範囲がずれている可能性があります。マスタの範囲を $ で固定し、検索値の列が範囲の左端にあるか確認します。
  • 「未登録」にしたいのに 0 が出る … 第2引数を空文字にすると、その先の集計で0として扱われる場合があります。文字の「未登録」にするか、用途に応じて使い分けます。
  • 数式が長くて読みにくい … VLOOKUPの代わりに XLOOKUP を使うと、第4引数で「見つからないときの値」を直接指定でき、IFERRORで包まずに済みます。

まとめ

IFERROR でVLOOKUPを包めば、マスタにないコードだけを「未登録」や空白にでき、一覧も集計もきれいに保てます。ただしすべてのエラーを隠してしまう性質があるので、まずは単体で動かしてから包む、または #N/A だけ消す IFNA を選ぶ、という一手間が安全です。

「マスタの整備から転記・集計までまとめて自動化したい」「関数では追いつかないのでマクロにしたい」という場合は、ExcelMate のチャット相談でそのままご相談いただけます。

よくある質問

IFERRORとIFNAの違いは?
IFERRORは #N/A だけでなく #VALUE! や #REF! など全てのエラーを置き換えます。IFNAは #N/A のエラーだけを置き換え、それ以外のエラーはそのまま表示します。数式自体の誤りに気づきたい場合はIFNAの方が安全です。
VLOOKUPの #N/A を空白にするには?
=IFERROR(VLOOKUP(…), "") のように、第2引数に空文字(ダブルクオート2つ)を入れます。該当しない行は何も表示されず、印刷や見た目がきれいになります。
IFERRORで本当のエラーまで隠れてしまわない?
はい、その点は注意が必要です。IFERRORは数式の組み間違いによるエラーも一律で隠すため、原因に気づきにくくなります。まずは正しく動くことを確認してからIFERRORで包む、または #N/A だけ消すIFNAを使うのが安全です。
#N/A が出るのは数式が間違っているから?
多くは検索値がマスタに存在しない、または表記ゆれ(全角半角・前後の空白)で一致していないのが原因です。マスタ側に正しいコードがあるか、検索値とマスタの値が完全一致しているかをまず確認します。

監修・運営者

株式会社KOPS 代表取締役 馬込 浩

馬込 浩株式会社KOPS 代表取締役

業務システムの要件定義〜設計〜実装を一気通貫で手がけ、経営者として自社のバックオフィスも運営。Excel・VBA・Power Query/スプレッドシート自動化の実務経験にもとづき、ExcelMateの記事を監修しています。

運営者情報・監修者プロフィールを見る