エクセル迷子案内所
← 学習記事一覧

VLOOKUPの#N/Aを表示させない方法【IFNA / IFERROR の使い分け】

公開: 2026-07-24更新: 2026-07-25
執筆: FMaker(エクセル迷子案内所 運営者)対応を想定: Microsoft 365 / Excel 2021最終事実確認: 2026-07-25

「VLOOKUPに IFERROR を貼ったら #N/A が空白になったけど、これで本当にいいのか不安…」 「上司から『エラー表示、消しといて』と言われたけど、どう消すのが正解か分からない…」

そんな時に使うのが IFNAIFERROR ですが、どちらを使うかで、消えずに残るエラーの範囲がまったく違います

💡 関連記事:


症状

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 を表示上だけ消す関数が IFERRORIFNA ・XLOOKUPの if_not_found です。ただし「表示を消す」と「原因を直す」はまったく別の作業です。特に IFERROR#N/A 以外のエラーもまとめて隠してしまうため、消し方を間違えると本当のバグ(参照切れ・関数名のミスなど)まで画面上から見えなくなり、発見が遅れます。だからこそ「隠す前に、隠していい状況かどうかを1回判断する」必要があります。

確認手順

あなたの状況に近いものから確認してください。

  1. XLOOKUPが使える環境か?(Microsoft 365 / Excel 2021 以降) → 使えるなら「Excelバージョン別の書き方」でXLOOKUPの if_not_found に一本化するのが最短です。使えないなら次へ
  2. 隠したいのは「見つからない」#N/A だけか、他のエラーも一緒に隠していいか?#N/A だけなら「IFNAとIFERRORの使い分け」の IFNA、他のエラーも隠していいなら同節の IFERROR(ただしリスクを承知の上で)
  3. 返り値を後で SUMAVERAGECOUNTA などで集計・件数カウントするか? → するなら「空文字と0を返した時の副作用」で返り値ごとの違いを確認(とくに COUNTA"" も1件と数えるため、件数が実際とズレます)、集計にも件数カウントにもグラフの元データにも使わない、表示だけのセルなら "" でも問題ありません

IFNA と IFERROR の使い分け

IFNAIFERROR はどちらも #N/A を隠せますが、捕まえるエラーの範囲がまったく違います

  • IFNA(VLOOKUP(...), "") = #N/A だけを捕まえる。他のエラーはそのまま表示されるので、バグに気づける
  • IFERROR(VLOOKUP(...), "") = 公式が挙げる7種のエラー#N/A #REF! #VALUE! #DIV/0! #NAME? #NULL! #NUM!)をまとめて捕まえる。IFERROR が見ているのは第1引数(かっこの中の式)の評価結果なので、第1引数の式が返した値がエラーなら種類を問わず飲み込んでしまう

見つからないコード(9999)を検索した直後は、どちらの結果も同じように空白になるため、この時点では違いが見えません。

検索コード9999が商品マスタに無いため、IFNAの結果列(E3)とIFERRORの結果列(F3)がどちらも空白になっている例。この時点では見た目に差がない

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

商品マスタの列を削除して参照範囲ごと壊れた例。IFNAの結果列(C列)は全行でVLOOKUPの数式内に#REF!がそのまま残り、セルにも#REF!が表示されてバグに気づける。IFERRORの結果列(D列)は同じ#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件が未登録で空文字になった、次のような列を考えます。

IFERRORで空文字を返した結果列(B列)を集計した例。10件中3件(B4/B7/B10)が空文字で、SUM=1400・AVERAGE=200(数値7件のみで計算)・COUNTA=10(空文字も1件と数える)・COUNT=7(数値のみを数える)になっている

  • 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 の分母には含まれてしまうため、未登録の件数が多いほど平均が押し下げられます。COUNTCOUNTA はどちらも1件として数えます。

これらをまとめると、返す値ごとの副作用は次のようになります。

隠す時に返す値ごとの副作用の早見表。空文字はSUM/COUNTに影響せずCOUNTAのみ含む、0はSUM/AVERAGE/COUNTA/COUNT全てに影響、NA()を残すとSUMとAVERAGEに#N/Aが伝播するがCOUNTには含まれない、"-"などの文字列はSUM/COUNTには影響せずCOUNTAには含まれる

返り値帳票の見た目SUMAVERAGE分母COUNTACOUNT推奨用途
""(空文字)空欄影響なし含まない含む含まない見た目重視・集計を汚さない・ただし件数系は要注意
00加算される含む(平均が下がる)含む含む集計上"未登録=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以降であれば、そもそも IFERRORIFNA も使わず 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一枚に凝縮。印刷して手元に。

次に読む

よく読まれている

それでも解決しないときは

記事の手順を試しても直らない場合、特定の構成だけで起きるレアケースかもしれません。対話で原因を1つずつ切り分けるのが最短です。

AI案内人に相談する(無料・登録不要)→