Sheet基本
IFERROR・IFNA 完全ガイド
IFERROR・IFNA 完全ガイド
エラーを制御してシートをプロ仕様にする
「#N/Aだらけのシート」をなくす。VLOOKUPや数式が失敗したときの表示を制御し、ユーザーに伝わるメッセージを返す。エラーハンドリングの基本。
GASとの関係:try-catch の関数版
GASの try { ... } catch(e) { return "エラー"; } は IFERROR と完全に対応します。エラーの「範囲を絞る」考え方(IFERRORかIFNAか)もGASのエラー設計に直結します。
目次
IFERRORとIFNAの違い
| 関数 | 処理するエラー | 使いどころ |
|---|---|---|
| IFERROR | #N/A, #VALUE!, #REF!, #DIV/0!, #NAME?, #NUM!, #NULL! すべて | ユーザーにエラーを一切見せたくない場合 |
| IFNA | #N/A のみ | VLOOKUPの「見つからない」だけを処理。#REF!などの構造エラーは表示させたい場合 |
基本構文
=IFERROR(式, エラー時の値)
=IFNA(式, #N/A時の値)
最もよく使うパターン(VLOOKUP + IFERROR)
// VLOOKUPが見つからなかった場合に「未登録」を表示
=IFERROR(VLOOKUP(A2, マスター!A:C, 2, FALSE), "未登録")
// 空白にしたい場合
=IFERROR(VLOOKUP(A2, マスター!A:C, 2, FALSE), "")
// IFNAを使う場合(#N/Aのみ処理)
=IFNA(VLOOKUP(A2, マスター!A:C, 2, FALSE), "未登録")
IFERRORとIFNAの使い分けを判断する
// IFERROR:フォームデータなど、どんなエラーも「-」で隠したいとき
=IFERROR(B2/C2, "-") // ゼロ除算(#DIV/0!)も含めて処理
// IFNA:VLOOKUPの「存在しないコード」だけを処理し、
// 列番号ミスによる#REF!はちゃんとエラーで知りたいとき
=IFNA(VLOOKUP(A2, マスター!A:C, 2, FALSE), "コード不明")
推奨の使い分け:本番シートで運用するなら IFNA を優先し、構造エラーは検知できるようにしておく。プロトタイプや一時的な集計なら IFERROR で一括処理。
実務でよく使うパターン
パターン1:ゼロ除算を防ぐ
=IFERROR(B2/C2, 0) // 分母が0のときは0を返す
=IFERROR(B2/C2, "データなし")
パターン2:FILTER関数のエラーを処理
// 条件に合う行がない場合FILTERは#N/Aになるため
=IFERROR(FILTER(A2:C100, B2:B100="東京"), "該当データなし")
パターン3:複数のフォールバックを設ける
// 第1優先のVLOOKUPが失敗したら第2のVLOOKUPを試す
=IFERROR(VLOOKUP(A2, テーブル1!A:B, 2, FALSE),
IFERROR(VLOOKUP(A2, テーブル2!A:B, 2, FALSE), "見つかりません"))
エラー時に何を返すべきか
| 状況 | 返す値 | 理由 |
|---|---|---|
| 合計・平均などの数値計算 | 0 または “” | 後続の計算に支障なし |
| VLOOKUPのコード参照 | “未登録” “コード不明” | 「存在しない」ことをユーザーに伝える |
| ユーザーへの表示セル | “-” または “” | 見た目をきれいにする |
| 後で確認が必要な場合 | “要確認” “⚠” | 見落とし防止 |
この知識をGASで活かす
GASでAPIを呼んだり外部ファイルを読んだりする処理には必ずtry-catchが必要です。IFERRORで「どの範囲のエラーを捕まえるか」を考える習慣が、GASのエラーハンドリング設計に直結します。
Free Newsletter
AIを業務に活かしたいなら
SMR-Labメルマガ
毎週火曜10時、コピペで使えるChatGPTプロンプト・
GASテンプレートをお届け。登録は1分・完全無料。
