VLOOKUPで検索したら「#N/A」、割り算したら「#DIV/0!」……。Excelを使っていると、こうしたエラー表示に悩まされますよね。せっかく作った資料にエラーが並んでいると見栄えも悪く、そのセルを参照する他の数式まで連鎖的にエラーになってしまいます。
そんなときに頼りになるのがIFERROR関数です。この記事では、IFERROR関数の基本的な使い方からVLOOKUP・XLOOKUPとの組み合わせ、IFNA関数やISERROR関数との使い分けまで、実例付きで解説していきます。
IFERROR関数とは?
IFERROR関数は、数式がエラーになったときに代わりの値を返してくれるExcelの関数です。エラー処理をたった1つの関数で完結できるので、実務で非常によく使われます。
読み方・意味
IFERROR(いふえらー)は「IF(もし)」+「ERROR(エラー)」を組み合わせた名前です。「もしエラーだったら、こっちの値を表示してね」という処理を1つの関数で実現します。
何ができるか
IFERROR関数を使うと、次のようなことができます。
- エラーの代わりに空白(””)を表示して、セルをきれいに見せる
- 「該当なし」「データなし」などの任意メッセージを表示する
- エラー時に別の計算式を実行する(代替処理)
- 他の数式への連鎖エラーを防止する
Excel 2007で導入された関数です。Microsoft 365やExcel 2024/2021でも使えます。Googleスプレッドシートでも同じ書き方で利用できますよ。
IFERROR関数の書き方(構文と引数)
基本構文
IFERROR関数の構文はとてもシンプルです。
=IFERROR(値, エラーの場合の値)
引数はたったの2つだけ。覚えやすいですよね。
引数の説明
それぞれの引数の意味を表で整理しておきましょう。
| 引数 | 必須/省略 | 説明 |
|---|---|---|
| 値 | 必須 | エラーかどうかをチェックしたい数式やセル参照を指定します |
| エラーの場合の値 | 必須 | エラーだった場合に表示する値を指定します。文字列・数値・数式のいずれもOKです |
第2引数に何も指定しない場合
第2引数を省略すると、エラー時に「0」が返されます。意図しない結果になることがあるので、空白にしたい場合は
""を明示的に指定しましょう。
IFERROR関数が検出できるエラー一覧
IFERROR関数はExcelの全7種類のエラーをまとめてキャッチします。
| エラー値 | 発生する主な原因 |
|---|---|
| #N/A | VLOOKUP関数等で検索値が見つからない |
| #VALUE! | 引数のデータ型が正しくない |
| #REF! | 参照先のセルが削除された |
| #DIV/0! | 0で割り算をした |
| #NUM! | 数値が大きすぎる・小さすぎる |
| #NAME? | 関数名のスペルミス |
| #NULL! | セル範囲の指定が正しくない |
すべてのエラーをまとめて処理してくれるので、「とりあえずエラーを非表示にしたい」場面では便利です。ただし、本来気づくべきエラーまで隠れるリスクがある点は後述します。各エラーの詳しい原因はExcelエラーの種類と原因も参考にしてみてください。
IFERROR関数の使い方と実務活用パターン
ここからは基本の使い方から実務パターンまで、まとめて見ていきましょう。
基本: エラーを空白・メッセージ・数値に置き換える
第2引数に指定する値を変えるだけで、3つの基本パターンを使い分けられます。
=IFERROR(A1/B1, "") … エラーを空白にする
=IFERROR(A1/B1, "計算不可") … メッセージを表示する
=IFERROR(A1/B1, 0) … 数値を返す
空白は印刷用の資料やプレゼンで、メッセージは原因を伝えたいときに、数値はSUM関数やAVERAGE関数での集計でエラーを防ぎたいときに使いましょう。
パターン1: VLOOKUP+IFERRORで未登録データを処理する
IFERROR関数の最も定番の使い方が、VLOOKUP関数との組み合わせです。
VLOOKUPは検索値が見つからないと「#N/A」エラーを返します。商品コードで商品マスタを検索するケースを考えてみましょう。
=IFERROR(VLOOKUP(A2, 商品マスタ!A:C, 3, FALSE), "未登録")
商品コードが見つからなければ「未登録」と表示します。大量のデータを突合するときに、この書き方は必須テクニックですよ。
実務では、複数列を同時に検索するケースも多いですよね。商品名と単価を同時に引く場合は、それぞれのセルにIFERROR+VLOOKUPを設定します。
B2(商品名): =IFERROR(VLOOKUP(A2, 商品マスタ!A:C, 2, FALSE), "未登録")
C2(単 価): =IFERROR(VLOOKUP(A2, 商品マスタ!A:C, 3, FALSE), 0)
商品名は「未登録」、単価は0を返すことで、集計に影響しない設計にできます。
パターン2: XLOOKUP+IFERRORの使い分け
XLOOKUP関数が使える環境(Excel 2021/2024/Microsoft 365)なら、検索エラーの処理方法が2つあります。
方法A: XLOOKUPの第4引数を使う(IFERROR不要)
=XLOOKUP(A2, 商品マスタ!A:A, 商品マスタ!C:C, "未登録")
XLOOKUPには「見つからない場合の値」を指定する第4引数があるので、検索エラーの処理にIFERRORは不要です。
方法B: IFERRORで囲む(全エラー対策)
=IFERROR(XLOOKUP(A2, 商品マスタ!A:A, 商品マスタ!C:C), "エラー")
XLOOKUPの第4引数で処理できるのは「検索値が見つからない」エラーだけです。数式自体の参照エラー(#REF!など)も含めて対策したい場合は、IFERRORで囲む方が安全ですよ。
両方を比較するとこうなります。
| 方法 | 数式 | 対応エラー |
|---|---|---|
| XLOOKUP第4引数 | =XLOOKUP(A2, ..., "未登録") | #N/Aのみ |
| IFERROR+XLOOKUP | =IFERROR(XLOOKUP(A2, ...), "エラー") | 全7種類 |
通常はXLOOKUPの第4引数で十分です。ただし、職場のExcelバージョンが混在している場合はIFERROR+VLOOKUPの方が互換性が高く安全ですね。
パターン3: 割り算の#DIV/0!エラーを回避する
売上分析や在庫管理でよくある「0で割ってしまう」問題です。前年比や構成比を計算するとき、分母が0やブランクだとエラーになりますよね。
=IFERROR(B2/C2, "---")
データが未入力の行もきれいに処理できます。月次レポートや予実管理表で重宝するパターンです。
達成率の計算にも使えます。
=IFERROR(B2/C2*100, 0)
目標値が未設定の行でもエラーにならず、集計に影響しません。
パターン4: INDEX+MATCH+IFERRORで柔軟な検索をする
INDEX関数とMATCH関数を組み合わせた検索でも、IFERRORは活躍します。
=IFERROR(INDEX(C:C, MATCH(A2, B:B, 0)), "該当なし")
VLOOKUPでは難しい「検索列より左側の値を取得する」パターンです。MATCH関数が検索値を見つけられないときに「該当なし」を返します。
Excel 2021以降なら、MATCH関数の代わりにXMATCH関数を使えばよりシンプルに書けます。
MATCH版 : =IFERROR(INDEX(C:C, MATCH(A2, B:B, 0)), "該当なし")
XMATCH版: =IFERROR(INDEX(C:C, XMATCH(A2, B:B)), "該当なし")
XMATCHはデフォルトで完全一致検索なので、第3引数の 0 を省略できますね。
パターン5: IFERRORのネストで複数テーブルを横断検索する
IFERROR関数の第2引数に別のIFERROR関数を入れると、複数のテーブルを順番に検索できます。
=IFERROR(VLOOKUP(A2, シート1!A:B, 2, FALSE), IFERROR(VLOOKUP(A2, シート2!A:B, 2, FALSE), "どちらにもなし"))
まずシート1で検索し、見つからなければシート2を検索します。どちらにもなければ「どちらにもなし」と表示する仕組みです。複数のマスタテーブルを横断検索したいときに便利なテクニックですよ。
パターン6: IF関数と組み合わせてエラーと空白を同時に処理する
IF関数とIFERROR関数を組み合わせると、「空白セルはスキップ、エラーは代替値」という処理を1つの数式で実現できます。
=IF(A2="", "", IFERROR(VLOOKUP(A2, 商品マスタ!A:C, 3, FALSE), "未登録"))
商品コード(A2)が空白ならセルも空白にし、入力されていればVLOOKUPを実行します。入力済みなのに見つからなければ「未登録」を表示。受注一覧や在庫管理表で、未入力行とデータ不一致を区別したいときに便利です。
エラー処理関数の比較(IFERROR・IFNA・ISERROR)
IFERROR関数と似た機能を持つ関数を比較してみましょう。実務でどれを使うか迷ったときの判断基準にしてください。
一覧比較表
| 関数 | 対象エラー | 戻り値 | 導入バージョン | 主な用途 |
|---|---|---|---|---|
| IFERROR | 全7種類 | エラー時: 指定値 / 正常時: 元の値 | Excel 2007 | 全エラーをまとめて処理 |
| IFNA | #N/Aのみ | エラー時: 指定値 / 正常時: 元の値 | Excel 2013 | 検索エラーだけを安全に処理 |
| ISERROR | 全7種類 | TRUE / FALSE | Excel 2003以前 | エラーの有無を判定(処理にはIF関数が必要) |
| ISERR | #N/A以外の6種類 | TRUE / FALSE | Excel 2003以前 | #N/Aを除外したエラー判定 |
| ISNA | #N/Aのみ | TRUE / FALSE | Excel 2003以前 | #N/Aだけを判定 |
| ERROR.TYPE | 全7種類 | エラー番号(1-7) | Excel 2003以前 | エラーの種類を番号で特定 |
IFERRORとIFNAの違い
IFNA関数は#N/Aエラーだけを対象にする関数です。構文はIFERRORとまったく同じです。
IFERROR版: =IFERROR(VLOOKUP(A2, B:C, 2, FALSE), "未登録")
IFNA版 : =IFNA(VLOOKUP(A2, B:C, 2, FALSE), "未登録")
この2つは、VLOOKUPで値が見つからないときの動作は同じです。違いは「#N/A以外のエラーが起きたとき」に現れます。
| 状況 | IFERROR | IFNA |
|---|---|---|
| 検索値が見つからない(#N/A) | 「未登録」を表示 | 「未登録」を表示 |
| 参照範囲が壊れた(#REF!) | 「未登録」を表示(バグが隠れる) | #REF!をそのまま表示(バグに気づける) |
| 数式の型エラー(#VALUE!) | 「未登録」を表示(バグが隠れる) | #VALUE!をそのまま表示(バグに気づける) |
VLOOKUPやXLOOKUPの「見つからない」だけを処理するなら、IFNA関数の方が安全です。#REF!や#VALUE!といった数式バグはそのまま表示されるので、問題にすぐ気づけますよ。
IFERRORとIF+ISERRORの比較
Excel 2007より前のバージョンでは、エラー処理にIF関数とISERROR関数を組み合わせていました。
IFERROR版 : =IFERROR(VLOOKUP(A2, B:C, 2, FALSE), "未登録")
IF+ISERROR版 : =IF(ISERROR(VLOOKUP(A2, B:C, 2, FALSE)), "未登録", VLOOKUP(A2, B:C, 2, FALSE))
IF+ISERRORだとVLOOKUPを2回書く必要があり、読みづらくなります。計算負荷も2倍になるので、Excel 2007以降ならIFERROR関数を使いましょう。
使い分けの判断基準
迷ったときは、次の基準で選んでみてください。
- すべてのエラーをまとめて非表示にしたい → IFERROR関数
- #N/Aだけを処理し、他のエラーは残したい → IFNA関数
- エラーの種類を判定して処理を分けたい → IF関数 + ERROR.TYPE関数
- エラーの有無だけをTRUE/FALSEで判定したい → ISERROR関数
これらの関数の使い分けはIF・IFS・IFERROR・IFNAの使い分けでも整理しています。
IFERROR関数のよくあるエラーと対処法
IFERROR関数自体はシンプルですが、使い方を間違えるとハマるポイントがあります。
| 症状 | 原因 | 対処法 |
|---|---|---|
| 本来気づくべきエラーまで隠れる | IFERROR関数が全エラーをキャッチするため | IFNA関数で#N/Aだけを対象にする |
| エラー時に意図しない「0」が表示される | 第2引数を省略している | 空白にしたい場合は "" を明示的に指定する |
| #NAME?エラーが出る | 第2引数の文字列にダブルクォーテーションがない | 文字列は必ず "文字列" で囲む |
| 数式の結果が正しくない | IFERRORの中の数式自体に誤りがある | IFERRORを外して元の数式だけで動作確認する |
| 空白セルなのに0と表示される | エラーではなく空白セルの参照が原因 | IFERROR関数はエラーのみ対象。空白の処理はIF関数で分岐する |
デバッグのコツ
IFERRORを使っている数式のトラブルシューティングでは、まずIFERRORを外して中の数式だけをテストしましょう。エラーの原因が見えるようになりますよ。
エラーを隠しすぎる問題への対策
IFERROR関数の最大の注意点は、すべてのエラーを非表示にしてしまうことです。本来気づくべき参照ミスや数式の誤りまで隠れてしまうリスクがあります。
たとえば、VLOOKUPの範囲指定を間違えて#REF!が出ていても、IFERRORが「未登録」と表示してしまいます。数式のバグに気づけないまま、間違ったデータで資料を作ってしまう可能性があるんです。
対策としては、以下の使い分けがおすすめです。
- 作成中のシート: IFERRORを外しておき、エラーを確認しながら作業する
- 完成版の資料: IFERRORで見た目を整える
- 検索系のエラーだけ処理したい: IFNA関数を使う
まとめ
IFERROR関数は、Excelのエラー処理をシンプルにしてくれる便利な関数です。
この記事のポイントをおさらいしておきましょう。
- IFERROR関数の構文は
=IFERROR(値, エラーの場合の値)の2つの引数だけ - エラーを空白にしたり、メッセージや数値を表示したりできる
- VLOOKUP+IFERRORの組み合わせが実務で最も頻出
- XLOOKUPなら第4引数でIFERRORが不要になるケースも
- INDEX+MATCH+IFERRORで検索列の左側も取得できる
- IF関数と組み合わせれば空白セルとエラーを同時に処理できる
- すべてのエラーをキャッチするため、エラーの隠しすぎに注意
- #N/Aだけを処理したい場合はIFNA関数の方が安全
まずはVLOOKUP+IFERRORの組み合わせから試してみてください。エラーだらけだった集計表が、一気にスッキリしますよ。
この記事で紹介した関数・関連記事
- VLOOKUP関数の使い方 — 検索の基本
- XLOOKUP関数の使い方 — 次世代の検索関数
- INDEX関数の使い方 — 柔軟なセル参照
- MATCH関数の使い方 — 位置を検索する
- IF関数の使い方 — 条件分岐の基本
- IFNA関数の使い方 — #N/A専用のエラー処理
- ISERROR関数の使い方 — エラー判定
- ERROR.TYPE関数の使い方 — エラー種類の特定
- Excelエラーの種類と原因 — エラー値の一覧
- IF・IFS・IFERROR・IFNAの使い分け — 条件分岐関数の比較
