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