エクセル関数辞典 エクセル関数辞典

IFERROR・IFNA関数の使い方|エラー処理の基本

IFERROR IFNA エラー処理 論理関数 VLOOKUP Excel関数
広告スペース (article-top)

Excelで数式を組んでいると、参照先のデータが見つからない場合や計算が成立しない場合にエラー値が表示されることがあります。IFERROR関数とIFNA関数を使えば、これらのエラーを適切に処理し、見やすいシートを作成できます。この記事では、2つの関数の基本から実務での使い分けまでを解説します。

IFERROR関数の基本構文

IFERROR関数は、数式がエラーを返す場合に代替の値を表示する関数です。Excel 2007以降で利用可能で、すべてのエラー値(#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME?、#NULL!)をまとめて処理できます。

構文

=IFERROR(値, エラーの場合の値)

引数の説明

引数説明必須/任意
エラーかどうかを判定する数式やセル参照必須
エラーの場合の値エラー時に返す代替値。文字列、数値、空文字列などを指定できる必須

基本的な使用例

割り算でゼロ除算エラーが発生する場合の処理です。

=IFERROR(B2/C2, "計算不可")

C2が0または空白の場合、#DIV/0!エラーの代わりに「計算不可」と表示されます。エラーが発生しなければ、通常の計算結果が返されます。

空文字列を返す方法

エラー時にセルを空白に見せたい場合は、空文字列を指定します。

=IFERROR(B2/C2, "")

印刷用の帳票など、エラー値を表示したくない場面で便利です。

IFNA関数の基本構文

IFNA関数は、#N/Aエラーだけを処理する関数です。Excel 2013以降で利用可能で、IFERROR関数よりも対象が限定されています。

構文

=IFNA(値, #N/Aの場合の値)

引数の説明

引数説明必須/任意
#N/Aエラーかどうかを判定する数式やセル参照必須
#N/Aの場合の値#N/Aエラー時に返す代替値必須

IFERROR関数との違い

IFNA関数は#N/Aエラーのみを処理し、それ以外のエラー(#VALUE!、#REF!など)はそのまま表示します。

関数処理するエラー用途
IFERRORすべてのエラー値エラーの種類を問わず処理したいとき
IFNA#N/Aエラーのみ検索系関数の「見つからない」だけを処理したいとき

この違いが重要になるのは、数式に予期しないエラーが含まれる可能性がある場合です。IFERRORですべてのエラーを隠してしまうと、数式自体の誤りに気づけなくなるリスクがあります。

VLOOKUPとの組み合わせ

VLOOKUP関数は、検索値が見つからない場合に#N/Aエラーを返します。実務では、検索対象が存在しないケースは頻繁に発生するため、エラー処理は必須です。

売上データの商品名検索

商品コードから商品マスタを参照して商品名を取得する例です。

セル内容
A2商品コード(入力値)
商品マスタSheet2のA:B列に商品コードと商品名
=IFERROR(VLOOKUP(A2, Sheet2!A:B, 2, FALSE), "該当なし")

商品コードがマスタに存在しない場合、#N/Aの代わりに「該当なし」と表示されます。

IFNA関数を使うべきケース

VLOOKUP関数の検索値が見つからないことだけを処理したい場合は、IFNA関数を使う方が安全です。

=IFNA(VLOOKUP(A2, Sheet2!A:B, 2, FALSE), "未登録")

この書き方なら、もし列番号の指定ミスで#REF!エラーが出た場合、そのエラーはそのまま表示されるため、数式の誤りに気づくことができます。

実務での使い分けの判断基準

以下のような基準で使い分けると、安全なシートを作成できます。

  • 検索系関数(VLOOKUP、HLOOKUP、MATCH)の#N/A処理にはIFNA関数を優先する
  • 計算結果のエラーをまとめて処理する場合はIFERROR関数を使う
  • 完成した帳票で見た目を整える目的ならIFERROR関数でも問題ない

XLOOKUPとの組み合わせ

XLOOKUP関数にはエラー処理の引数が組み込まれているため、IFERROR/IFNAを使わなくても「見つからない場合」の値を指定できます。

XLOOKUP関数の第4引数

=XLOOKUP(A2, Sheet2!A:A, Sheet2!B:B, "該当なし")

第4引数に「見つからない場合の値」を直接指定できるため、IFERROR関数で囲む必要がありません。数式がシンプルになり、可読性も向上します。

それでもIFERROR/IFNAが必要な場面

XLOOKUP関数の第4引数は、検索値が見つからない場合のみ有効です。数式自体にエラーがある場合(参照範囲のサイズ不一致など)には対応できません。

=IFERROR(XLOOKUP(A2, Sheet2!A:A, Sheet2!B:B, "該当なし"), "エラー")

堅牢なシートを作る場合は、XLOOKUP関数の第4引数とIFERROR関数を組み合わせて、二重のエラー処理を行うこともあります。

実務での活用パターン

勤怠管理での活用

社員番号から氏名と部署を検索する勤怠管理シートの例です。

=IFNA(VLOOKUP(B3, 社員マスタ!A:C, 2, FALSE), "社員番号を確認してください")

社員番号が間違っている場合に、具体的なメッセージを表示することで入力ミスの修正を促せます。

売上集計での活用

月次売上を計算する際、データが未入力の月の処理です。

=IFERROR(SUMIFS(売上!D:D, 売上!A:A, A2, 売上!B:B, B2) / COUNTIFS(売上!A:A, A2, 売上!B:B, B2), 0)

平均売上を計算するとき、該当データがない場合のゼロ除算を0として処理します。

複数のエラー処理を組み合わせる

エラーの種類に応じて異なるメッセージを表示したい場合は、IF関数とISERROR系関数を組み合わせます。

=IF(ISNA(VLOOKUP(A2, マスタ!A:B, 2, FALSE)), "未登録",
 IF(ISERROR(VLOOKUP(A2, マスタ!A:B, 2, FALSE)), "数式エラー",
 VLOOKUP(A2, マスタ!A:B, 2, FALSE)))

ただし、この方法はVLOOKUPが最大3回実行されるため、データ量が多い場合はパフォーマンスに影響します。LET関数を使って改善する方法もあります。

=LET(結果, VLOOKUP(A2, マスタ!A:B, 2, FALSE),
 IF(ISNA(結果), "未登録", IF(ISERROR(結果), "数式エラー", 結果)))

よくある間違いと注意点

エラーを隠しすぎない

IFERRORですべてのエラーを空文字列にしてしまうと、数式の誤りを見逃す原因になります。開発中はエラーを表示させておき、完成後に必要な箇所だけエラー処理を追加する方が安全です。

0とエラーの区別

IFERROR関数でエラー時に0を返す設定にしていると、本来の計算結果が0なのかエラーだったのかが区別できなくなります。

=IFERROR(B2/C2, 0)

この数式では、C2が0のときもB2がもともと0のときも結果が0になります。区別が必要な場合は、「-」や「N/A」などの文字列を返すことを検討してください。

IFERROR関数の入れ子

複数のVLOOKUPを順番に試す場合、IFERRORを入れ子にできます。

=IFERROR(VLOOKUP(A2, マスタ1!A:B, 2, FALSE),
 IFERROR(VLOOKUP(A2, マスタ2!A:B, 2, FALSE), "どちらにも該当なし"))

マスタ1で見つからなければマスタ2を検索し、それでも見つからなければ「どちらにも該当なし」を返します。

Google スプレッドシートでの互換性

IFERROR関数はGoogle スプレッドシートでも同じ構文で使用できます。IFNA関数も同様に利用可能です。動作に大きな違いはありません。

まとめ

IFERROR関数とIFNA関数は、Excelのエラー処理において基本となる関数です。

  • IFERROR関数はすべてのエラーをまとめて処理できる
  • IFNA関数は#N/Aエラーだけを処理し、他のエラーは見逃さない
  • VLOOKUPの#N/A処理にはIFNA関数を優先すると安全
  • XLOOKUP関数は第4引数でエラー処理を内蔵している
  • エラーを隠しすぎると数式の誤りに気づけなくなるため注意が必要

業務で検索系の関数を使う際は、エラー処理をセットで組み込む習慣をつけましょう。状況に応じてIFERROR関数とIFNA関数を適切に使い分けることで、堅牢で見やすいシートを作成できます。

広告スペース (article-bottom)

あわせて読みたい