IFERROR + XLOOKUP:エラーに強い Excel 数式を作る
IFERROR、IFNA、XLOOKUP の if_not_found 引数の使い分けと、エラーを隠すことが最悪の選択になるケース。エラーを出すべきときにだけきちんと出す、実践的な数式パターンを解説します。
レポートのあちこちに #N/A が散らばっていると壊れて見えるので、反射的にすべてを IFERROR で包んで済ませたくなります。それが正解のときもあります。しかし多くの場合、本当の問題——壊れた検索、ゼロ除算、キーの打ち間違い——を、きれいな空白セルの下に埋めてしまいます。
このガイドでは、数式エラーを処理する 3 つのツールとその違い、そして想定内のエラーは隠しつつ想定外のエラーは見えるまま残すパターンを解説します。
3 つのツール
IFERROR はあらゆる種類のエラーを捕まえます。
=IFERROR(A2/B2, 0)
割り算が #DIV/0! でも #VALUE! でも #REF! でも——何であっても——結果は 0 になります。この網羅性こそが危険でもあります。列の削除による #REF! は注意を向けるべきものであって、静かな 0 で済ませるべきものではありません。
IFNA は #N/A だけを捕まえます。
=IFNA(VLOOKUP(A2, Prices!A:B, 2, FALSE), "not listed")
検索関数まわりでは、ほぼ常にこちらが正解です。「値が見つからない」は想定内の状態ですが、同じ数式から出る #VALUE! や #REF! は本物のバグのサインとして残ります。
XLOOKUP の組み込み if_not_found は、フォールバックを検索そのものに組み込みます。
=XLOOKUP(A2, Prices!A:A, Prices!B:B, "not listed")
ラップするよりすっきりしていて、処理するのは「見つからない」場合だけ。他のエラーはそのまま表面化します。
原則:想定内は処理し、想定外は見せる
数式ごとに 1 つだけ問いを立ててください。ここで正常なエラーはどれか?
- 見つからないことが正当にあり得る検索 →
#N/Aを処理する(IFNA か XLOOKUP のフォールバック)。 - 分母が正当にゼロになり得る比率 → 分母を明示的にテストする:
=IF(B2=0, "", A2/B2)
条件をテストするほうが、エラーを捕まえるより優れています。IF(B2=0,…) はフォールバックが存在する理由を数式自体が説明しますが、同じ割り算を IFERROR で包むと、B 列に紛れ込んだ文字列が引き起こす #VALUE! まで飲み込んでしまいます。
- それ以外 → エラーを出させておく。目に見える
#REF!の代償は 1 分ですが、見えない#REF!の代償は間違ったレポートです。
定番の失敗
列全体への一括 IFERROR。 40 個のゼロが並ぶレポートを提出したら、そのうち 3 個は本物のゼロで、37 個は誰も気づかなかったシート名変更の結果だった——というオチになります。
数値計算に流れ込む IFERROR(..., "")。 数値列の空文字列は、下流の SUM を静かに狂わせ、算術演算で #VALUE! を生みます。隠したはずのエラーが、原因から遠く離れた 2 列先で戻ってくるのです。
汚れたデータを示すエラーを捕まえること。 VALUE(A2) がエラーになる原因が文字列と数値の混在なら、正しい対処は列をクリーニングすることであって、症状を握りつぶすことではありません。
隠れエラーだらけのシートを監査する
すべての数式が IFERROR で包まれたブックを引き継いだら、打ち手は 2 つです。
- 何が捕まっているか数える。 作業列でラッパーを外した内側の数式を再現し、範囲に対して
=SUM(--ISERROR(...))を入力してエラーを数えます。 - アシスタントに監査を頼む。 AI for Excel はシートの数式をスキャンし、現在エラーを抑え込んでいるセルとエラーの種類を一覧化し、「検索ミス、正しく処理済み」と「壊れた参照、静かに隠蔽」を区別できます。そのうえで、承認したものだけを修正します。もちろん変更前には自動バックアップ付きです。
この種の数式監査は、手作業では骨が折れますが、ブックをプログラム的に読むツールなら高速です。作業列を組むより目的を一文で伝えたい方は、アドインを無料でお試しください。そもそもこうした数式を自然な言葉から書く方法については、AI 数式生成をご覧ください。
よくある質問
IFERROR と IFNA の違いは何ですか?
IFERROR はすべての種類のエラーを捕まえ、IFNA は #N/A(「見つからない」エラー)だけを捕まえます。検索関数まわりでは IFNA か XLOOKUP の if_not_found 引数を優先し、#REF! のような構造的エラーは見えるまま残しましょう。
IFERROR をどこにでも使うべきですか?
いいえ。想定しているエラー(通常は検索のミスとゼロ分母)だけを処理し、想定外のエラーは表示させてください。目に見えるエラーは診断情報ですが、隠されたエラーは将来の誤ったレポートです。
Excel でエラーのあるセルをすべて見つけるには?
F5 → セル選択 → 数式 → 「エラー値」だけにチェックを入れます。シート内のすべてのエラーセルが選択されます。AI アシスタントなら、さらにエラーの種類と原因ごとの分類まで行えます。