ExcelのIFERROR関数でエラーを操作!使い方まとめ!

IFERROR関数でエラーを操作する使い方まとめ!
ExcelのIFERROR関数の使い方を知りたいときはないでしょうか。

けど、そんな中で悩むことは、

・数式で#N/Aなどのエラーが出て表が崩れる
・エラーを「該当なし」と表示する方法がわからない
・IFERRORとIFNAの違いがわからない
・エラーのせいで合計が計算できない

ですよね。

今回はそんなお悩みを解決する

・Excelの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 というエラーが表示されます。
これは「該当するデータが見つからない」という意味のエラーです。
実際の入力画面がこちらです。
XLOOKUP関数の入力画面

#N/Aエラーが出た状態

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

STEP3. IFERRORで「該当なし」に置き換える

エラーを分かりやすい文字に置き換えるのが IFERROR関数 です。
F2セルの数式を、次のように書き換えます。

=IFERROR(XLOOKUP(E2,$A$2:$A$11,$B$2:$B$11),"該当なし")

意味は「XLOOKUPの結果がエラーなら、かわりに『該当なし』と表示する」です。
実際の入力画面がこちらです。
IFERROR関数の入力画面

「該当なし」に置き換わった状態

F2の表示が 該当なし に変わりました。
#N/Aが消えて、表が見やすくなりましたね。

POINT

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が安心です。
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は合計に足されてしまう点には注意しましょう。
0と空白の使い分け

STEP6. 合計でエラーを無視したい場合

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

=SUM(D14:D18)
=AGGREGATE(9, 6, D14:D18)

D20は #N/A、D21はエラー行を除いた合計になっています。
SUMとAGGREGATEの違い

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

タカヒロ

タカヒロ
VBAでは On Error Resume Next でエラーを無視し、IsError で結果を確認するのが定番です。
数式の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は 該当なし と表示されました。
明細の合計も、エラーで崩れることなく計算できています。
思ったとおりに動きましたか?
エラーをそのまま出さず、意味のある表示に置き換えられるようになると、表が見やすく、集計も止まりません。
完成した表

さいごに

いかがでしょうか。

今回は、

・ExcelのIFERROR関数でエラーを操作する方法(IFNAとの違い・合計の無視も)

についてまとめました。

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



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。






コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA ImageChange Image