IFERROR関数の使い方をわかりやすく解説|エラーを隠す前に確認しておきたいこと

関数の使い方

VLOOKUPやSUMIFSを使った表に「#N/A」や「#DIV/0!」が並んでいるのが見た目に気になって、IFERROR関数でとりあえず空欄にして提出したことがあります。見た目はきれいになりましたが、後日「このセル、本当は計算できていない箇所だったのでは」と指摘されて青ざめました。エラーを隠すことと、エラーの原因を解決することは、まったく別の話だったのです。

IFERROR関数は、数式がエラーになったときに表示する内容を指定できる関数です。使い方自体はとてもシンプルですが、便利さゆえに「とりあえず全部のエラーをIFERRORで囲む」という使い方が広がりやすく、それが思わぬトラブルにつながることもあります。今回は基本の書き方から、実務でのよくある使用例、そしてIFERROR関数を使う際にこそ気をつけたい注意点まで整理していきます。

1. IFERROR関数とは

IFERROR関数は、指定した数式がエラーになった場合に、代わりに表示する値を指定できる関数です。書式は次の通りです。

=IFERROR(値, エラーの場合の値)
  • 値:本来計算したい数式を指定します。
  • エラーの場合の値:値がエラーになった場合に表示する内容を指定します。

たとえば、VLOOKUP関数で検索した結果がエラーになる可能性がある場合、次のように書きます。

=IFERROR(VLOOKUP(A1, B2:C100, 2, FALSE), "該当なし")

VLOOKUP関数が正常に値を返せばその値がそのまま表示され、エラー(#N/Aなど)になった場合は「該当なし」と表示されます。IF関数のように条件を自分で組み立てる必要がなく、「エラーかどうか」の判定を関数側にまるごと任せられる点がIFERROR関数の特徴です。

2. 実務でよくある使用例

2-1. VLOOKUPの検索結果がないときに空欄にする

=IFERROR(VLOOKUP(D1, A2:B200, 2, FALSE), "")

検索対象がまだ登録されていないときに「#N/A」を表示させたくない場合の定番の使い方です。空欄(””)にしておくことで、印刷資料の見た目を整えられます。

2-2. 割り算でゼロ除算エラーを避ける

=IFERROR(C2/D2, 0)

D列(分母)が0や空欄のときに発生する「#DIV/0!」エラーを避け、代わりに0を表示する例です。達成率や平均単価など、割り算を使う集計で頻繁に使われます。

2-3. 複数の検索を順番に試す

=IFERROR(VLOOKUP(E1, A2:B100, 2, FALSE), IFERROR(VLOOKUP(E1, C2:D100, 2, FALSE), "未登録"))

1つ目の表で見つからなければ2つ目の表を検索し、それでも見つからなければ「未登録」と表示する、という段階的な検索です。IFERROR関数を入れ子にすることで、「候補Aがだめなら候補Bを試す」という処理を1つの数式で表現できます。

2-4. 文字列を数値に変換する際のエラーを防ぐ

=IFERROR(VALUE(F2), F2)

F列に数値の文字列と、そうでない文字列が混在している場合、VALUE関数で数値に変換できないセルはエラーになります。IFERROR関数で囲んでおくと、変換できたセルは数値に、できなかったセルは元の文字列のまま表示させる、という柔軟な処理ができます。

2-5. XLOOKUPの第4引数の代わりに使う

=IFERROR(XLOOKUP(G1, H2:H200, I2:I200), "確認中")

XLOOKUP関数には「見つからない場合」を指定する引数がもともと用意されていますが、XLOOKUP以外の複雑な数式(複数の関数を組み合わせた数式など)をまとめてエラー処理したい場合は、外側からIFERROR関数で囲む方が柔軟に対応できます。

2-6. IFERRORとIFNAを使い分ける

=IFNA(VLOOKUP(J1, K2:L100, 2, FALSE), "未登録")

似た関数にIFNA関数があります。IFERROR関数はすべての種類のエラーを対象にするのに対し、IFNA関数は「#N/A」エラーだけを対象にします。数式の入力ミス(#REF!や#VALUE!など)まで一律で隠してしまいたくない場合は、あえてIFNA関数を使う、という選択肢も知っておくと安心です。

2-7. 集計の最終行だけエラーを避ける

=IFERROR(SUM(K2:K200)/COUNT(K2:K200), "データなし")

平均を求める数式で、対象範囲がまだ空の状態(月初でデータがまだ入っていないときなど)だと「#DIV/0!」が出てしまいます。テンプレートとして配布する集計シートに、あらかじめIFERROR関数を仕込んでおくことで、データが入る前の段階でも見た目が崩れずに済みます。ひな形として配る資料や、他部署に渡すテンプレートでは、この「まだデータが入っていない状態」を想定しておくと、後から「エラーが出ています」という問い合わせを減らせます。

3. IFERROR関数を使う前に確認しておきたいこと

3-1. エラーの原因を確認せずに使ってしまう

IFERROR関数の一番の注意点は、これです。エラーには「検索対象が本当に存在しない」という正常なエラーと、「数式や範囲の指定を間違えている」という異常なエラーの2種類があります。IFERROR関数はこの2つを区別せず、すべてのエラーを同じように扱って隠してしまいます。表を作った直後は、まずIFERROR関数を付けない状態で数式を確認し、どんなエラーが、どのセルで、なぜ出ているのかを一度把握してから、必要な箇所にだけIFERROR関数を追加する、という順番をおすすめします。

3-2. 集計対象の異常値まで見えなくなってしまう

IFERROR関数でエラーを空欄や0に置き換えてしまうと、そのセルを含めて合計や平均を計算したときに、本来は「入力漏れ」として気づくべきだったデータが、正常なデータのように扱われてしまうことがあります。とくに0に置き換えるケースでは、集計結果自体は一見正しく見えるため、後から見直しても異常に気づきにくいという厄介さがあります。

3-3. すべての数式に機械的にIFERRORを付けてしまう

表全体の数式に一律でIFERROR関数を付けてしまうと、本来は気づくべきだった入力ミスや参照ミスまで、すべて「該当なし」や空欄として表示されてしまいます。エラーが出ること自体は、間違いに気づくための重要なサインでもあります。IFERROR関数は「想定内のエラーだけを見た目上整える」ためのものであり、「エラーの原因を調べる手間を省く」ためのものではない、という位置づけを忘れないようにしたいところです。

3-4. エラーの種類を確認せずに一括で同じ表示にしてしまう

「#N/A」も「#DIV/0!」も「#REF!」も、原因はまったく違うのに、IFERROR関数で同じ「エラーの場合の値」に統一してしまうと、後から見返したときにどんな種類の問題があったのかが分からなくなります。エラーの種類によって表示を変えたい場合は、ISERROR関数やISNA関数と組み合わせて、原因ごとに異なるメッセージを出す工夫も検討する価値があります。

3-5. IFERRORの内側の数式自体が重い場合、計算が二重に走ることがある

IFERROR関数は、内側の数式を一度計算してみてエラーかどうかを判定し、エラーであれば改めて別の値を返すという仕組みです。内側の数式が非常に重い処理(大量データを検索する複雑な数式など)の場合、条件分岐のたびに重い計算が実行されることになり、ファイル全体の動作が重くなる原因になることがあります。数式が重いと感じる場合は、IFERRORで囲む前に、そもそも数式自体を軽くできないかを見直す価値があります。

4. IF関数との関係を整理する

IFERROR関数は、名前がIF関数に似ていますが、判定する内容がまったく異なります。IF関数は「条件を満たすかどうか」を判定するのに対し、IFERROR関数は「数式がエラーになるかどうか」だけを判定します。IF関数の基本的な使い方や、条件分岐でよくある間違いについては、以下の記事で詳しく取り上げています。

IF関数の使い方を基礎から解説|条件分岐でつまずかないための整理法 https://www.excel-laboratory.online/if-kansu/

IF関数の使い方を基礎から解説|条件分岐でつまずかないための整理法
IF関数の基本の書き方から、AND/OR関数との組み合わせ方、条件分岐でよくある5つの間違い、ネストが読めなくなったときの整理方法まで、実務目線でわかりやすく解説します。

また、VLOOKUP関数で「#N/A」エラーが消えないというトラブルは、実務でIFERROR関数がもっとも使われる場面の一つです。IFERROR関数で表示を整える前に確認しておきたい、エラーそのものの原因については、以下の記事で具体的に解説しています。

VLOOKUPで#N/Aが消えない原因と対処法 https://www.excel-laboratory.online/vlookup-na/

VLOOKUPで#N/Aが消えない原因と対処法|実務で多い3つのミス
VLOOKUPで#N/Aが消えない原因を実務目線で解説。スペース混入・TRUE設定・範囲ズレなど、会議前に焦らないための確認ポイントを具体例付きで紹介します。

よくある質問

Q. IFERROR関数を使うと、数式が正しく動いているかどうか分からなくなりませんか?

その懸念はもっともです。だからこそ、表を作った直後はIFERROR関数を付けずに数式を確認し、意図した通りにエラーが出ているかを一度目視してから、IFERROR関数を追加する順番をおすすめします。最初からIFERRORで囲んでしまうと、数式のミスなのか、想定内のエラーなのかを見分けられなくなります。

Q. エラーの場合の値には、どんなものを指定するのがおすすめですか?

用途によります。印刷資料など見た目を整えたいだけなら空欄(””)、集計に含めても影響が出ない場面なら0、後から人が見て状況を判断したい場面なら「未登録」「確認中」のような具体的な文字列がおすすめです。空欄や0で一律に隠してしまうと、後から見返したときに元々どんなエラーだったのか分からなくなるため、可能であれば具体的な文字列を選ぶ方が安全です。

Q. IFERRORとIFNA、結局どちらを使えばいいですか?

VLOOKUPやXLOOKUPなど、検索系の関数で「見つからない」エラー(#N/A)だけを扱いたい場合はIFNA関数がおすすめです。数式の種類が多岐にわたり、どんなエラーが起きるか特定しにくい場合や、とりあえず表示を整えたい場合はIFERROR関数を使う、という使い分けが実務では扱いやすいです。

Q. IFERROR関数の中に、さらにIFERROR関数を入れても大丈夫ですか?

問題なく動作します。2-3で紹介したように、複数の検索を順番に試したい場合など、実務でも入れ子にする場面はあります。ただし、入れ子が深くなるほど数式が読みにくくなるため、3段階を超えるような複雑な入れ子になってきたら、表の設計自体を見直すサインだと考えた方がよいかもしれません。

Q. IFERROR関数を使うと、計算スピードに影響はありますか?

一般的な実務レベルのデータ量であれば、体感できるほどの違いはほとんどありません。ただし3-5で触れた通り、内側の数式自体が重い場合は、IFERROR関数を通すことで計算が余分に発生することがあります。行数が数万行を超えるような大きな表で動作が重いと感じたら、IFERROR関数の有無ではなく、まず内側の数式そのものを軽くできないか(検索範囲を絞る、補助列を使うなど)を優先して見直すとよいでしょう。

まとめ

IFERROR関数は、エラーの見た目を整えるための便利な関数ですが、使い方を誤ると「エラーの原因を隠してしまう関数」にもなり得ます。

  • IFERROR関数を付ける前に、まずエラーの原因を確認する
  • 空欄や0に置き換えると、異常値が正常なデータのように見えてしまうことがある
  • すべての数式に機械的に付けるのではなく、想定内のエラーにだけ使う
  • 検索系のエラーだけを扱いたい場合は、IFNA関数という選択肢もある

エラー表示は、見た目が悪いものではなく、間違いに気づくための大切なサインです。IFERROR関数を使うときほど、「このエラーは隠してよいものか」を一度立ち止まって考える習慣をつけておくと、後から思わぬ指摘を受けずに済みます。焦って全部のエラーを消そうとせず、まずは原因を見極めることを優先してみてください。

コメント

タイトルとURLをコピーしました