ExcelのIFERROR関数の使い方を知りたいときはないでしょうか。
けど、そんな中で悩むことは、
・エラーを「該当なし」と表示する方法がわからない
・IFERRORとIFNAの違いがわからない
・エラーのせいで合計が計算できない
ですよね。
今回はそんなお悩みを解決する
についてまとめます!
完成イメージ
数式でマスタに無いデータを検索すると、#N/Aなどのエラーが表示されて表が見づらくなります。
今回は
・IFERROR関数でエラーを「該当なし」に置き換える方法
をゴールにします。
あわせてよく使う
・IFNAとの違いと・合計でエラーを無視する方法も身につきます。
なお、数式を手で直すのが手間な方向けにVBAでエラーを回避する方法と、うまくいかないときの対処法(トラブルシュート)もご紹介します。
早速実装して試してみましょう!

上の画像が完成形です。マスタに無いコード(P999)を検索しても、IFERRORで「該当なし」と表示され、表の合計も崩れません。
もくじ
STEP1. 元データを用意する
まずは商品のマスタ表を用意します。
A列が商品コード、B列が商品名、C列が単価で、10件あります。
検索エリアはE1・F1に見出しを置き、E2に検索したい商品コードを入力します。
F2には、これから商品名を引っ張ってくる数式を入れます。

下の表をコピーして、Excelのシートに貼り付けるとそのまま試せます。
| 商品コード | 商品名 | 単価 |
|---|---|---|
| P001 | コピー用紙A4 | 480 |
| P002 | ボールペン(黒) | 120 |
| P003 | ファイルボックス | 350 |
| P004 | ホッチキス | 980 |
| P005 | 付箋(大) | 250 |
| P006 | クリアファイル | 80 |
| P007 | はさみ | 620 |
| P008 | 電卓 | 1500 |
| P009 | のり(スティック) | 180 |
| P010 | 修正テープ | 320 |
※ 数式で求める列は空にしています。すでに値が入っている列はそのまま残して試せます。
STEP2. まずはエラーを出してみる
検索エリアの F2セル に、商品名を引っ張る数式を入力します。
ここではマスタから検索できる XLOOKUP関数 を使います。
=XLOOKUP(E2,$A$2:$A$11,$B$2:$B$11)
E2には、あえてマスタに無いコード「P999」を入力してみましょう。
するとF2には #N/A というエラーが表示されます。
これは「該当するデータが見つからない」という意味のエラーです。
実際の入力画面がこちらです。

#N/Aエラーが出た状態
F2セルに #N/A が表示されました。
エラーがそのまま出ると、表全体が崩れて見えますよね。
次のステップで、このエラーを分かりやすい表示に置き換えましょう。

STEP3. IFERRORで「該当なし」に置き換える
エラーを分かりやすい文字に置き換えるのが IFERROR関数 です。
F2セルの数式を、次のように書き換えます。
=IFERROR(XLOOKUP(E2,$A$2:$A$11,$B$2:$B$11),"該当なし")
意味は「XLOOKUPの結果がエラーなら、かわりに『該当なし』と表示する」です。
実際の入力画面がこちらです。

「該当なし」に置き換わった状態
F2の表示が 該当なし に変わりました。
#N/Aが消えて、表が見やすくなりましたね。
IFERRORは =IFERROR(数式, エラーの場合の値) と書きます。
エラーを消すのではなく、「該当なし」など意味のある値に置き換えるのがポイントです。
原因を調べたいときは、いったんIFERRORを外してエラーを確認しましょう。
STEP4. IFNAとの違い(#N/Aだけを捕まえる)
よく似た関数に IFNA関数 があります。
IFNAは #N/Aだけ を捕まえ、#VALUE!や#REF!などはそのまま表示します。
書き方はIFERRORと同じです。
=IFNA(XLOOKUP(E2,$A$2:$A$11,$B$2:$B$11),"該当なし")
今回は#N/Aなので結果は同じ「該当なし」ですが、数式のミスによるエラーを見逃したくないときはIFNAが安心です。

IFERROR・IFNA・ISERROR・ISNAの比較
エラー処理に関わる4つの書き方を表にまとめました。
捕まえられるエラーの範囲が違うのがポイントです。
| 書き方 | 捕まえるエラー | 向いている場面 |
|---|---|---|
| =IFERROR(値, 代替値) | すべてのエラー(#N/A・#VALUE!・#REF!など) | エラーの種類を問わず、まとめて表示を整えたいとき |
| =IFNA(値, 代替値) | #N/Aだけ | 「見つからない」だけを処理し、数式ミスは残したいとき |
| =IF(ISERROR(値), 代替値, 値) | すべてのエラー | IFERRORが使えない古いExcelで使う書き方 |
| =IF(ISNA(値), 代替値, 値) | #N/Aだけ | #N/Aだけを判定したいとき(IFNAの旧式版) |
STEP5. 0にするか空白にするかの使い分け
エラーのかわりに何を返すかは、用途で使い分けます。
数値として集計に使いたいなら 0、見た目をすっきりさせたいなら 空白(””) がおすすめです。
G2に0、H2に空白を返す数式を入れて比べてみました。
=IFERROR(XLOOKUP($E$2,$A$2:$A$11,$C$2:$C$11), 0)
=IFERROR(XLOOKUP($E$2,$A$2:$A$11,$C$2:$C$11), "")
G2は 0、H2は何も表示されません。
ただし、0は合計に足されてしまう点には注意しましょう。

STEP6. 合計でエラーを無視したい場合
明細表の金額を合計してみます。
明細にはマスタに無いコード「P999」が1件あるため、その行の金額は #N/A になります。
このとき SUM関数 を使うと、合計まで #N/A になってしまいます。
エラーを無視して合計したいときは AGGREGATE関数 が便利です。
2番目の引数に 6 を指定すると、エラー値を無視して集計します。
=SUM(D14:D18)
=AGGREGATE(9, 6, D14:D18)
D20は #N/A、D21はエラー行を除いた合計になっています。

VBAでエラーを回避する
数式ではなくVBAで検索する場合は、On Error や IsError でエラーを回避できます。
毎回同じ検索をマクロで回すときに便利です。
Sub SafeLookup()
Dim v As Variant
On Error Resume Next
v = Application.WorksheetFunction.XLookup(Range("E2").Value, _
Range("A2:A11"), Range("B2:B11"))
If Err.Number <> 0 Or IsError(v) Then
Range("F2").Value = "該当なし"
Err.Clear
Else
Range("F2").Value = v
End If
On Error GoTo 0
End Sub
数式のIFERRORと同じ役割なので、あわせて覚えておくと安心です。
うまくいかないときの対処法(トラブルシュート)
IFERRORはとても便利ですが、使い方を誤ると原因が見えにくくなります。
よくあるつまずきと対処法をまとめました。
| 症状 | 原因 | 対処 |
|---|---|---|
| エラーが消えず原因が分からなくなる | IFERRORですべてのエラーを握りつぶしている | 原因調査中はIFERRORを外す/IFNAで#N/Aだけに絞る |
| IFERRORで0にしたら合計が狂う | 0が本当のデータとして合計に加算される | 合計にはAGGREGATE(9,6,範囲)を使い、エラー行を除外する |
| 数式自体のミスも隠れてしまう | 参照ミスや引数の誤りもIFERRORが吸収する | 一時的にIFERRORを外し、#VALUE!や#REF!が出ないか確認する |
| #VALUE!と#REF!の違いが分からない | 原因が違うエラーを同じ対処にしている | #VALUE!は引数の型ミス、#REF!は参照先の削除。原因に応じて直す |
| IFNAで#VALUE!が消えない | IFNAは#N/Aだけを捕まえる | すべてのエラーを処理したいならIFERRORを使う |
関数の説明
今回使う関数の概要です。
エラー処理と集計でよく使うので、違いを押さえておきましょう。
IFERROR関数(イフエラー)
| 書式 | =IFERROR(値, エラーの場合の値) |
|---|---|
| できること | 数式の結果がエラーだったときだけ、指定した値を返します。エラーでなければそのまま結果を返します。 |
| 戻り値 | 数式の結果、またはエラーの場合に指定した値 |
| こんなときに | #N/A・#VALUE!・#REF! などすべてのエラーをまとめて処理したいとき。 |
| 注意 | 原因を隠してしまうため、調査中は外して確認しましょう。 |
=IFERROR(XLOOKUP(E2,$A$2:$A$11,$B$2:$B$11),"該当なし")
IFNA関数(イフエヌエー)
| 書式 | =IFNA(値, #N/Aの場合の値) |
|---|---|
| できること | 数式の結果が#N/Aのときだけ、指定した値を返します。他のエラーはそのまま表示されます。 |
| 戻り値 | 数式の結果、または#N/Aの場合に指定した値 |
| こんなときに | 「データが見つからない」だけを処理し、数式のミスは見えるままにしたいとき。 |
| 注意 | #VALUE!や#REF!は捕まえられません。それらも処理したいならIFERRORを使います。 |
=IFNA(XLOOKUP(E2,$A$2:$A$11,$B$2:$B$11),"該当なし")
AGGREGATE関数(アグリゲート)
| 書式 | =AGGREGATE(集計方法, オプション, 範囲) |
|---|---|
| できること | 合計・平均などを求めつつ、エラー値や非表示行を無視できます。 |
| 第2引数(抜粋) | 6=エラー値を無視/5=非表示行を無視/7=両方を無視 |
| こんなときに | 範囲にエラーが混ざっていても、合計だけは出したいとき。 |
| 注意 | 第1引数は 9=SUM、1=AVERAGE など。SUM用途なら 9 を指定します。 |
=AGGREGATE(9, 6, D14:D18)
完成
マスタに無いコード「P999」を検索しても、F2は 該当なし と表示されました。
明細の合計も、エラーで崩れることなく計算できています。
思ったとおりに動きましたか?
エラーをそのまま出さず、意味のある表示に置き換えられるようになると、表が見やすく、集計も止まりません。

さいごに
いかがでしょうか。
今回は、
についてまとめました。
まずは今回のサンプル表で、ぜひ一度試してみてください。
「すべてのエラーを隠すならIFERROR」「#N/AだけならIFNA」と使い分けると、原因も見失いません。
また、他にも便利なExcelの時短テクニックがありますので、よろしければご参照頂ければと思います。














コメントを残す