【Googleスプレッドシート】IFERROR関数で#N/Aを別のメッセージに置き換える!エラー処理の基本

【Googleスプレッドシート】IFERROR関数で#N/Aを別のメッセージに置き換える!エラー処理の基本
🛡️ 超解決

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(数式, 代替値)

  1. 数式: エラーをチェックしたい数式やセル参照を指定します。通常はVLOOKUPやQUERYなど、エラーが発生する可能性のある式を入れます。
  2. 代替値: 数式がエラーの場合に表示する値です。空白にする場合は""(ダブルクォーテーション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フォームからインポートしたデータで、日付の変換に失敗する場合を考えます。

  1. 生のデータをDATEVALUEで変換: =DATEVALUE(A2) は、日付形式でないセルに対して#VALUE!エラーを返します。
  2. 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

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。