VLOOKUPの#N/Aを表示させない方法【IFNA / IFERROR の使い分け】
「VLOOKUPに IFERROR を貼ったら #N/A が空白になったけど、これで本当にいいのか不安…」
「上司から『エラー表示、消しといて』と言われたけど、どう消すのが正解か分からない…」
そんな時に使うのが IFNA と IFERROR ですが、どちらを使うかで、消えずに残るエラーの範囲がまったく違います。
💡 関連記事:
- VLOOKUPで#N/Aが出る5つの原因と解決法 ← そもそもの原因を直したい人はこちら
- IFERROR の使い方と落とし穴【エラーを隠す前に読む完全ガイド】 ← IFERROR関数そのものをもっと深く知りたいならこちら
- XLOOKUPへの乗り換えガイド ← 乗り換えできる環境なら、そもそもIFERRORが要らなくなります
症状
VLOOKUPに IFERROR を貼ったら空白になったが本当にこれでいいのか不安、上司にエラー表示を消しといてと言われた、マスタにまだ登録されていないコードを検索する時に出る #N/A は想定内なので隠したい——そんな状態になっていませんか?
即答
見つからない時だけを隠したいなら =IFNA(VLOOKUP(検索値, 範囲, 列番号, FALSE), "") が既定です。IFERROR は #REF! や #NAME? など本来気づくべきバグまで一緒に飲み込んでしまうため、VLOOKUPで「見つからない」だけを隠したい用途では IFNA を選んでください。
なお Microsoft 365 / Excel 2021 以降が使える環境なら、XLOOKUP の第4引数 if_not_found に直接書く方法もあります(詳しくは後述します)。
なぜ起きるのか
VLOOKUPは検索範囲の左端列に検索値が見つからないと、Excelの仕様として #N/A を返します。これは「式が壊れている」のではなく「探しに行ったが見つからなかった」という正しいシグナルです。
この #N/A を表示上だけ消す関数が IFERROR ・IFNA ・XLOOKUPの if_not_found です。ただし「表示を消す」と「原因を直す」はまったく別の作業です。特に IFERROR は #N/A 以外のエラーもまとめて隠してしまうため、消し方を間違えると本当のバグ(参照切れ・関数名のミスなど)まで画面上から見えなくなり、発見が遅れます。だからこそ「隠す前に、隠していい状況かどうかを1回判断する」必要があります。
確認手順
あなたの状況に近いものから確認してください。
- XLOOKUPが使える環境か?(Microsoft 365 / Excel 2021 以降) → 使えるなら「Excelバージョン別の書き方」でXLOOKUPの
if_not_foundに一本化するのが最短です。使えないなら次へ - 隠したいのは「見つからない」
#N/Aだけか、他のエラーも一緒に隠していいか? →#N/Aだけなら「IFNAとIFERRORの使い分け」のIFNA、他のエラーも隠していいなら同節のIFERROR(ただしリスクを承知の上で) - 返り値を後で
SUM・AVERAGE・COUNTAなどで集計・件数カウントするか? → するなら「空文字と0を返した時の副作用」で返り値ごとの違いを確認(とくにCOUNTAは""も1件と数えるため、件数が実際とズレます)、集計にも件数カウントにもグラフの元データにも使わない、表示だけのセルなら""でも問題ありません
IFNA と IFERROR の使い分け
IFNA と IFERROR はどちらも #N/A を隠せますが、捕まえるエラーの範囲がまったく違います。
IFNA(VLOOKUP(...), "")=#N/Aだけを捕まえる。他のエラーはそのまま表示されるので、バグに気づけるIFERROR(VLOOKUP(...), "")= 公式が挙げる7種のエラー(#N/A#REF!#VALUE!#DIV/0!#NAME?#NULL!#NUM!)をまとめて捕まえる。IFERRORが見ているのは第1引数(かっこの中の式)の評価結果なので、第1引数の式が返した値がエラーなら種類を問わず飲み込んでしまう
見つからないコード(9999)を検索した直後は、どちらの結果も同じように空白になるため、この時点では違いが見えません。

差が出るのは、他のエラーが混ざったときです。 たとえば商品マスタの参照範囲を含む列を誤って削除して #REF! が発生したケースを考えてみます。

IFNA 側は数式の中の参照が壊れているため #REF! がそのまま表示され、その場で気づけます。一方 IFERROR 側は #REF! ごと飲み込んで空白にしてしまうため、見た目には何も起きていないように見えます。この違いに気づかないまま数か月放置すると、集計結果がじわじわとズレていくのに原因が分からない、という事故につながります。
| 関数 | 捕まえるエラー | VLOOKUPでの推奨度 |
|---|---|---|
IFERROR | 第1引数の評価結果がエラーなら種類を問わず(公式7種) | △ 古い環境で妥協的に使う程度に留める |
IFNA | #N/A のみ | ◎ 既定はこちら |
IF(ISNA(VLOOKUP(...)), "", VLOOKUP(...)) | #N/A のみ(IFNA が使えない古い環境の代替) | 〇 Excel 2010以前 |
📌 ポイント:
IFERROR自体が悪い関数というわけではありません。割り算の#DIV/0!など、エラーの種類が最初から1つに決まっている場面ではIFERRORのほうがシンプルです。VLOOKUPのように複数のエラー要因(参照切れ・スペルミス・型不一致など)がありうる式では、IFNAで範囲を絞ったほうが安全、という話です。IFERROR自体の構文・落とし穴をもっと詳しく知りたい方は IFERROR の使い方と落とし穴 を、#REF!など他のエラー記号を早見表で確認したい方は Excelの主要エラー6種 をご覧ください。
""(空文字)と 0 を返した時の副作用
IFERROR(VLOOKUP(...), "") のように空文字を返すと見た目はきれいになりますが、そのセルを後で集計に使うと、関数によって挙動がバラバラになります。
たとえば10件のVLOOKUP結果のうち3件が未登録で空文字になった、次のような列を考えます。

- SUM は無視します(数値でないので合計に影響しません)。数値7件の合計どおり
1400になります。 - COUNT も無視します(数値だけを数える関数なので)。数値7件どおり
7になります。 - COUNTA は「空でない」と数えます。空文字列
""は"データが入っているセル"として扱われるため、10件全部が数えられて10になります。件数を出したいセルでCOUNTAを使っていると、実際の件数(7件)とズレます。 - AVERAGE の分母には含まれません。数値7件だけで平均されるので
200(=1400÷7)になります。 - ISBLANK は
FALSEを返します。セルが空に見えても、実際には空文字列というデータが入っているためです。 - COUNTBLANK は「空セル」と同じく数えます。数式が空文字を返しているセルも「空白」として数える、Excelの仕様上の例外的な挙動です。
0 を返す場合(IFERROR(VLOOKUP(...), 0))は副作用の出方が変わります。SUM には 0 として加算される(実質無害)一方、AVERAGE の分母には含まれてしまうため、未登録の件数が多いほど平均が押し下げられます。COUNT ・COUNTA はどちらも1件として数えます。
これらをまとめると、返す値ごとの副作用は次のようになります。

| 返り値 | 帳票の見た目 | SUM | AVERAGE分母 | COUNTA | COUNT | 推奨用途 |
|---|---|---|---|---|---|---|
""(空文字) | 空欄 | 影響なし | 含まない | 含む | 含まない | 見た目重視・集計を汚さない・ただし件数系は要注意 |
0 | 0 | 加算される | 含む(平均が下がる) | 含む | 含む | 集計上"未登録=0"として扱いたい時 |
NA() を残す | #N/A | 加算不可(#N/A が伝播) | #N/A伝播 | 含む | 含まない | むしろ集計側で #N/A を無視したい時 |
"-" などの文字列 | - | 影響なし(無視される) | 含まない | 含む | 含まない | 帳票の見た目のみ・集計しないセル限定 |
⚠️ とくに注意:
IFERROR(VLOOKUP(...), "-")のように文字列の"-"を返したセルを、後から誰かが=SUM(範囲)で集計しても、文字列は無視されるだけでエラーにはなりません。ただし=A1+B1+C1のようにセルを演算子(+)で直接足し算する数式に文字列セルが混ざると#VALUE!になります。これは"-"に限った話ではなく、""(空文字)を返したセルもまったく同じです。""も「長さ0の文字列」という文字列の一種なので、=SUM(A1:C1)なら無視されて合計できますが、=A1+B1+C1と演算子で書くと#VALUE!になります。「関数(SUM)で集計するか」「演算子で直接足すか」で挙動が変わる点を覚えておくと、集計時の事故を防げます。
📌 上級Tip: 集計側だけを賢くする方法もあります。
AGGREGATE関数(Excel 2010以降で使用可能)は#N/Aを含む範囲でもエラーを無視して集計できます(例:=AGGREGATE(9, 6, 範囲)は合計・エラー無視)。つまり「セルには#N/Aを残したまま(=バグに気づける状態を維持)、集計側だけがエラーを無視して正しく計算する」という設計も選べます。
Excelバージョン別の書き方
| 環境 | 推奨する書き方 |
|---|---|
| Microsoft 365 / Excel 2021 以降 | =XLOOKUP(検索値, 検索範囲, 返す範囲, "")(IFERROR・IFNAとも不要) |
| Excel 2013 〜 2019 | =IFNA(VLOOKUP(検索値, 範囲, 列番号, FALSE), "") |
| Excel 2010 以前(IFNA非対応) | =IF(ISNA(VLOOKUP(検索値, 範囲, 列番号, FALSE)), "", VLOOKUP(検索値, 範囲, 列番号, FALSE)) |
| 妥協で使う場合(全エラーを丸めてよい環境) | =IFERROR(VLOOKUP(検索値, 範囲, 列番号, FALSE), "") |
IFNA はExcel 2013以降で使える関数です。それより古いバージョン(Excel 2010/2007など)では関数自体が存在せず #NAME? になるため、配布先の環境が古い可能性があるなら IF(ISNA(...), ...) の書き方に控えたほうが安全です。VLOOKUPを2回書くことになる点だけデメリットです。Mac版の場合は、Excel for Mac 2011 は IFNA 非対応(#NAME? になります)、Excel 2016 for Mac 以降で使用可能です。
Microsoft 365 / Excel 2021以降であれば、そもそも IFERROR も IFNA も使わず XLOOKUP の第4引数 if_not_found に直接書けます。ただし XLOOKUP を使ったブックを Excel 2019 以前の環境で開くと、数式が _xlfn.XLOOKUP と表示されて #NAME? エラーになります。配布先の環境が古い可能性がある場合は注意してください。乗り換えの詳しい手順は XLOOKUPへの乗り換えガイド にまとめています。
📌 ポイント: 使っているExcelのバージョン確認方法は環境によって画面が異なるため、本記事では扱いません。関数名を入力したときに候補として出てくるかどうかでも、対応バージョンかどうかの目安になります。
【実務でこれが起きた場面】
販売管理表で IFERROR(VLOOKUP(...), "") を全面的に採用していた。数か月後、参照先マスタのシートで不要になった列をまとめて削除したことで、VLOOKUPの参照範囲ごと #REF! になっていた行があったが、IFERRORによって空白化されていたため誰も気づかなかった。集計担当者が「なぜか売上合計が少しずつ減っている」と気づいた時には、すでに数か月分の帳票を遡って修正する羽目になっていた。もし IFNA を使っていれば、その行だけ #REF! がそのまま表示されて即日発見できたはずだ。「VLOOKUPを隠すなら、まず IFNA から検討する」を徹底していれば防げた事故だった。
まず原因を直せないか
ここまで隠す方法を解説してきましたが、本サイトの基本スタンスは「隠す前に、まず原因を直せないか確認する」です。#N/A が出る原因(型不一致・余白混入・FALSE指定漏れなど)を先に確認したい方は、VLOOKUPで#N/Aが出る5つの原因と解決法 を先に読むことをおすすめします。
そのうえで、「隠していい場合」と「絶対に隠してはいけない場合」を整理すると次のようになります。
| 状況 | 隠していい | 隠してはいけない |
|---|---|---|
| マスタに未登録のコードを検索している | ◎(想定内の #N/A) | — |
| 顧客提示用の帳票の体裁を整えたい | ◎(IFNA で) | — |
| 型不一致・余白混入・FALSE指定漏れが原因 | — | ✕ 原因を直す(原因の確認はこちら) |
| 業務クリティカルな集計に使うセル | △(IFNA で種類を特定した上で設計に注記) | ✕ IFERROR で全部握りつぶすのは避ける |
| 他人に渡すブック・長く使う管理表 | △ | ✕ 全エラー隠しは事故のもと |
⚠️ 「隠したら空白が減った」からといって、原因が直ったとは限りません。
IFERRORは原因が変わって別のエラー(#N/A→#REF!など)になっても、表示は同じ空白のままなので区別できません。原因を確認したい時は、IFERRORを一時的に外して数式そのものを見てください。
まとめ:チェックリスト
- 隠す前に VLOOKUPで#N/Aが出る5つの原因と解決法 で原因を1回確認したか
- XLOOKUPが使える環境なら、
if_not_foundで1本化したか -
IFERRORではなくIFNAを選んだか(VLOOKUP用途) - 返り値の
""/0の副作用(SUM・AVERAGE・COUNTA)を検討したか - 集計に使うセルなら
NA()を残す設計も検討したか
よくある質問
Q. IFNAとIFERROR、結局どっちを使えばいいですか?
VLOOKUP専用なら IFNA が既定です。他の関数もまとめて扱う汎用ラッパーとして使うなら IFERROR が向いています。
A. VLOOKUP専用なら IFNA が既定です。IFERRORをVLOOKUPに使うと、#REF! のような本当のバグまで見逃してしまいます。他の関数も含めた汎用の保険としてはIFERRORも引き続き有効です。
Q. "" を返したセルをSUMで合計するとどうなりますか?
"" は数値ではないのでSUMは無視します。エラーにはなりません。
A. "" は数値として扱われないため、SUMは無視します(エラーにはなりません)。ただしCOUNTAは1件と数えるため、件数を出すセルでは実際の件数とズレる点に注意してください。
Q. IFNAが使えない古いExcelではどうすればいいですか?
IF(ISNA(VLOOKUP(...)), "", VLOOKUP(...)) で同じことができます。
A. IF(ISNA(VLOOKUP(...)), "", VLOOKUP(...)) で同じ結果が得られます。VLOOKUPを2回書くことになる分、数式は長くなります。
Q. XLOOKUPのif_not_foundとIFNA、どちらを使うべきですか?
Microsoft 365 / Excel 2021以降が使える環境なら、XLOOKUP一択です。
A. Microsoft 365 / Excel 2021以降が使える環境なら、XLOOKUP 一択です。1つの関数で完結し、VLOOKUPの他の弱点(左端列縛りなど)も同時に解消できます。ただし配布先が Excel 2019 以前の可能性がある場合は、_xlfn.XLOOKUP による #NAME? に注意してください。詳しくは XLOOKUPへの乗り換えガイド をご覧ください。
Q. IFERRORで空白が減ったので、原因が直ったと判断していいですか?
いいえ、それだけでは判断できません。
A. 判断できません。IFERRORは原因が変わって別のエラー(#N/A → #REF! など)になっても、表示は同じ空白のままという場合があります。原因を確認したい時は、本文と数式を実際に確認してください。
無料ダウンロード・登録不要のメールだけ
Excelの「詰まりどころ」早見表を1枚に。
COUNTIF・SUMIF・#N/A・エラー6種の《症状→原因→即対応》をA4一枚に凝縮。印刷して手元に。
次に読む
VLOOKUPで#N/Aが出る5つの原因と解決法【上から順に試せばOK】
VLOOKUPで#N/Aが出る原因をチェックリスト形式で5パターン解説。データ型・余白・FALSE指定・左端列・絶対参照の順に試せば、ほぼ全てのケースで原因を特定できます。IFERROR・IFNAで#N/Aを表示させない(空白にする)書き方も最後に紹介します。
IFERROR の使い方と落とし穴【エラーを隠す前に読む完全ガイド】
IFERRORの基本構文・使用例・3つの落とし穴をまとめました。エラーを「とりあえず隠す」前に知っておきたい判断基準、IFNAとの使い分け、VLOOKUPの#N/Aだけを空白にする書き方まで、コピペで使える実例つきで初心者向けに解説します。
XLOOKUPへの乗り換えガイド+動かない・#NAME?・#SPILL!の直し方【VLOOKUPの上位互換】
XLOOKUPはVLOOKUPの上位互換。既定で完全一致・左方向も検索可・列番号指定不要・見つからない時のメッセージまで1本で書ける。乗り換え方と、#NAME?(バージョン非対応)・#SPILL!(書き出し先が空いていない)が出た時の直し方を、症状別に確認手順で解説します。