Sheet基本
IFNA 完全ガイド
IFNA 完全ガイド
#N/Aだけを処理するピンポイントエラー制御
IFERRORが「全エラーを一括処理」なのに対して、IFNAは「見つからない(#N/A)だけを処理」する。構造エラーは検知したまま、欠損値だけをやさしく扱う設計ができる。
GASとの関係:特定の例外クラスだけcatchする設計
IFNAの「#N/Aだけ処理、他はそのまま」は、GASで catch(e){ if(e instanceof NotFoundException){...} else throw e; } と特定例外のみ捕捉するパターンに対応します。
目次
IFNAとIFERRORの決定的な違い
=IFNA(式, #N/Aのときの値) // #N/A だけを処理
=IFERROR(式, エラーのときの値) // すべてのエラーを処理
IFNAは「検索して見つからなかった(#N/A)」だけを処理します。#REF!(参照エラー)や#VALUE!(型エラー)は処理せず、エラーとして表示されます。これにより「値が存在しない」ことと「式の書き間違い」を区別できるのが重要です。
基本的な使い方
// VLOOKUPで見つからない場合だけ処理
=IFNA(VLOOKUP(A2, マスター!A:C, 2, FALSE), "未登録")
// XLOOKUP・MATCH でも同様
=IFNA(XLOOKUP(A2, マスター!A:A, マスター!B:B), "コード不明")
=IFNA(MATCH(A2, 一覧!A:A, 0), "リストにない")
IFERRORとIFNAの使い分け判断フロー
| 状況 | 使うべき関数 | 理由 |
|---|---|---|
| 本番運用のシート | IFNA 推奨 | #REF!などの構造エラーが検知できる |
| 一時的な集計・プロトタイプ | IFERRORでOK | とにかくエラー表示をなくしたい |
| 式が複雑でデバッグ中 | IFNA(または省略) | エラー種類を確認しながら修正したい |
| ユーザー向け入力フォームの表示 | IFERROR | どんなエラーもユーザーに見せない |
実務のパターン例
パターン1:マスターにないコードを「未登録」と表示
// 商品コードがマスターにない場合のみ処理
// 式の書き間違いによる#REF!はそのまま表示させてデバッグしやすくする
=IFNA(VLOOKUP(A2, 商品マスター!A:D, 3, FALSE), "未登録品")
パターン2:FILTERの結果が空のとき
// 条件に合う行がない場合、FILTERは#N/Aを返す
=IFNA(FILTER(A2:C100, B2:B100="東京"), "該当なし")
パターン3:INDEX+MATCHとの組み合わせ
// MATCHが#N/Aになるのは「見つからない」ときだけなのでIFNAが適切
=IFNA(INDEX(D:D, MATCH(G2, A:A, 0)), "見つかりません")
この知識をGASで活かす
IFNAの「特定のエラーだけを処理する」設計は、GASのtry-catchで例外の種類を判別する設計と同じ考え方です。スプレッドシートでエラーハンドリングの粒度を意識する習慣が、GASの堅牢なコード設計に活きてきます。
Free Newsletter
AIを業務に活かしたいなら
SMR-Labメルマガ
毎週火曜10時、コピペで使えるChatGPTプロンプト・
GASテンプレートをお届け。登録は1分・完全無料。
