エラー処理に使える関数は?
結論
IFERROR、ISERROR、IFNA等でエラー処理が可能です。全バージョンで使用可能。
詳しい解説
IFERROR(値, エラー時の値)が最も汎用的です。ISERROR(値)はエラーかどうかをTRUE/FALSEで返します。IFNA(値, NA時の値)は#N/Aエラーのみ処理し、他のエラーはそのまま表示するため、VLOOKUP等で意図しないエラーを見逃しにくい利点があります。全バージョンで使用可能です。
旧バージョンでの代替方法
IF(ISERROR(...))パターン(全バージョン対応)Excel 2016以降
IFERROR関数が登場する以前(Excel 2003以前)の古典的な書き方です。現在のExcel 2016以降ではIFERRORの方が簡潔ですが、古いブックとの互換性が必要な場合に使います。
=IF(ISERROR(VLOOKUP(A2, マスタ!A:C, 2, FALSE)), "", VLOOKUP(A2, マスタ!A:C, 2, FALSE))IF(ISNA(...))パターン(全バージョン対応)Excel 2016以降
#N/Aエラーのみを対象にする場合、ISNA関数とIF関数を組み合わせます。IFNAと同等の動作をしますが記述が長くなります。
=IF(ISNA(VLOOKUP(A2, マスタ!A:C, 2, FALSE)), "未登録", VLOOKUP(A2, マスタ!A:C, 2, FALSE))よくあるエラーと対処法
IFERRORですべてのエラーを隠してしまう原因: IFERROR("")で全エラーを空白にすると、#REF!(参照先削除)や#VALUE!(計算ミス)など本来対処が必要なエラーまで隠れます。
対処: #N/Aだけを処理したい場合はIFNAを使ってください。他のエラーは残すことで問題を早期発見できます。
IFERRORの第2引数が空文字""になっているのに0が表示される原因: IFERRORの外側の数式が空文字""を数値として評価し、0に変換することがあります。
対処: TEXT関数やIF関数でセルの表示形式を明示的に制御するか、「0を非表示にする」設定(Excelオプション→詳細設定)を使ってください。
XLOOKUPと組み合わせた場合にIFERRORが不要原因: XLOOKUP(Excel 2021/2024/365対応)には見つからない場合の戻り値を直接指定できる第4引数があります。
対処: XLOOKUPが使える環境では =XLOOKUP(A2, マスタ!A:A, マスタ!B:B, "未登録") のように直接指定し、IFERRORのネストを避けられます。
バージョン対応
| Excel 2016 | Excel 2019 | Excel 2021 | Excel 2024 | Microsoft 365 |
|---|---|---|---|---|
| 対応 | 対応 | 対応 | 対応 | 対応 |
実務での使用例
VLOOKUPのエラーを非表示にする
商品マスタに未登録の商品コードでも空白表示にして見栄えを良くする
=IFERROR(VLOOKUP(A2, マスタ!A:C, 2, FALSE), "")IFNA関数で#N/Aだけを処理
#VALUE!や#REF!は残して#N/Aだけ「未登録」に変換
=IFNA(VLOOKUP(A2, マスタ!A:C, 2, FALSE), "未登録")