GoogleスプレッドシートでVLOOKUPやQUERYを使うと、該当するデータが存在しない場合に「#N/A」というエラーが表示されます。このエラーがそのまま残っていると、見た目が悪いだけでなく、後続の計算やグラフにも悪影響を及ぼします。そこで役立つのがIFERROR関数です。この記事では、IFERROR関数を使って#N/Aを任意のメッセージや空白に置き換える方法を、基本から応用まで解説します。これを読めば、シートのエラー表示をすっきりと制御できるようになります。
【要点】IFERROR関数を使ったエラー処理の基本
- =IFERROR(数式, 代替値) の基本構文: 数式の結果がエラーの場合に代替値を表示します。エラーでなければ元の結果をそのまま返します。
- VLOOKUPとの組み合わせで#N/Aを非表示に: =IFERROR(VLOOKUP(…), “”) と書けば、該当なしの場合に空白セルを表示できます。
- 任意のメッセージを表示する方法: =IFERROR(数式, “データなし”) のように文字列を指定すれば、エラー時にそのメッセージを表示できます。
ADVERTISEMENT
目次
IFERROR関数とは?その役割とメリット
IFERROR関数は、指定した数式がエラー(#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME?、#NULL!)になった場合に、代わりの値やメッセージを表示する関数です。エラーが発生しなければ、元の数式の結果をそのまま表示します。これにより、シート上のエラー表示を目立たなくしたり、ユーザーにわかりやすいメッセージに置き換えたりできます。
IFERROR関数の最大のメリットは、シートの見栄えが整うことです。特に、他のユーザーと共有するシートでは、#N/Aというエラーが表示されると、データが欠けているように見えて混乱を招きます。IFERROR関数を使えば、該当データがないことを「該当なし」や空白で表現でき、シートの可読性が向上します。また、後続の計算でエラーが伝播するのを防ぐ効果もあります。
前提条件として、IFERROR関数はすべてのエラーを補足する点を理解しておく必要があります。もし#N/Aだけを処理したい場合は、IFNA関数の方が適切です。この違いについては後ほど詳しく説明します。
IFERROR関数の基本的な使い方
IFERROR関数は2つの引数からなるシンプルな構造です。以下で基本構文を確認し、実際の使用例を見ていきましょう。
基本構文と引数
構文:=IFERROR(数式, 代替値)
- 数式: エラーをチェックしたい数式やセル参照を指定します。通常はVLOOKUPやQUERYなど、エラーが発生する可能性のある式を入れます。
- 代替値: 数式がエラーの場合に表示する値です。空白にする場合は
""(ダブルクォーテーション2つ)、文字列を表示する場合は"メッセージ"、数値を表示する場合は直接数値を入力します。
代替値を省略すると、エラー時に空白セルになります(古いバージョンでは0が返ることもありますが、現在は空白扱いです)。
VLOOKUP関数と組み合わせて#N/Aを非表示にする例
最もよく使われるパターンは、VLOOKUPの結果が#N/Aになる場合の処理です。例えば、商品コードから価格を検索するシーンを考えます。
通常のVLOOKUP:=VLOOKUP(A2, 商品マスタ!A:C, 3, FALSE)
この式で該当する商品コードがないと#N/Aが表示されます。
IFERRORでラップ:=IFERROR(VLOOKUP(A2, 商品マスタ!A:C, 3, FALSE), "未登録")
これで、該当なしの場合に「未登録」という文字列が表示されます。空白にしたい場合は""を指定します。
同様に、QUERY関数やINDEX/MATCHでも同じ要領で利用できます。
別の数式全体をラップして任意の値に置き換える
IFERRORはVLOOKUPだけでなく、任意の数式全体をラップできます。例えば、割り算で分母が0の場合のDIV/0!エラーを処理する例です。
=IFERROR(A2/B2, "分母がゼロです")
また、複数のエラーが混在する可能性がある複雑な数式にも使えます。例えば、ARRAYFORMULAと組み合わせて配列全体のエラーを一括処理することも可能です。ただし、ARRAYFORMULA内でIFERRORを使う場合は、配列数式の扱いに注意してください。
実践例として、Googleフォームからインポートしたデータで、日付の変換に失敗する場合を考えます。
- 生のデータをDATEVALUEで変換:
=DATEVALUE(A2)は、日付形式でないセルに対して#VALUE!エラーを返します。 - IFERRORでエラーを制御:
=IFERROR(DATEVALUE(A2), "日付変換エラー")とすれば、エラー時にメッセージを表示できます。
IFERROR関数使用時の注意点とよくあるミス
#N/A以外のエラーもすべて補足してしまう
IFERRORは#N/Aだけでなく、すべてのエラータイプを補足します。そのため、意図しないエラーが隠れてしまう危険性があります。例えば、VLOOKUPの範囲指定を間違えた場合、#REF!エラーが発生しますが、IFERRORで囲んでいるため「該当なし」という誤ったメッセージが表示されてしまいます。エラー原因の特定が遅れるため、開発中はIFERRORを使わず、最終調整で追加することをおすすめします。
IFERRORとIFNAの使い分け
#N/Aエラーだけを処理したい場合は、IFNA関数を使用します。IFNAは#N/Aにしか反応しないため、他のエラーはそのまま表示されます。例えば、VLOOKUPでデータがないときだけ空白にし、参照範囲の指定ミスはエラーとして残したい場合に便利です。
比較:
・=IFERROR(VLOOKUP(...), "") → すべてのエラーで空白
・=IFNA(VLOOKUP(...), "") → #N/Aのみ空白、他のエラーは表示
IFERROR内で別のエラーが発生するケース
IFERRORの第2引数(代替値)自体がエラーになる可能性があります。例えば、代替値に別の関数を使う場合です。=IFERROR(VLOOKUP(...), VLOOKUP(...)) とすると、最初のVLOOKUPがエラーの時に2番目のVLOOKUPが実行されますが、2番目もエラーの場合は結局#N/Aが表示されます。代替値は単純な値か、絶対にエラーにならない式を指定しましょう。
ADVERTISEMENT
IFERRORと他のエラー処理関数の比較
| 関数 | 対象エラー | 使用例 | メリット | デメリット |
|---|---|---|---|---|
| IFERROR | すべてのエラー | =IFERROR(A1/B1,”エラー”) | 1つの関数で全エラー対応 | 意図しないエラーを隠す |
| IFNA | #N/Aのみ | =IFNA(VLOOKUP(…),”なし”) | #N/Aのみ処理、他のエラーは検出可能 | #N/A以外に対応できない |
| IF(ISERROR) | すべてのエラー | =IF(ISERROR(A1/B1),0,A1/B1) | 条件分岐で柔軟な処理 | 記述が冗長 |
状況に応じて適切な関数を選びましょう。一般的なシートではIFERRORで十分ですが、精度が求められる分析シートではIFNAやIF(ISERROR)の組み合わせを検討します。
まとめ
IFERROR関数を使えば、#N/Aや#DIV/0!などのエラーを任意のメッセージや空白に置き換えられるようになります。基本構文は=IFERROR(数式, 代替値)で非常にシンプルです。ただし、すべてのエラーを補足してしまう特性があるため、IFNAとの使い分けを意識しましょう。次に、QUERY関数やIMPORTRANGEなど他のエラーが出やすい関数にも同様に応用できます。実際のシートでエラー処理を施し、データの見やすさを向上させてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
