Excel関数 逆引き集 | 参照切れ防止 → IFERROR

Excel
スポンサーリンク

概要

シートを整理しているときに、

  • 列や行を削除したら、あちこちが #REF! だらけになった
  • 集計用ブックで、元データブックを閉じたり構造を変えたらエラーになった
  • 数式をコピーした先で「参照先がもう存在しない」状態になった

こうした “参照切れ” を見た目上きれいに抑える のに使えるのが
IFERROR 関数です。

ここでは、あくまで「参照切れ防止・見た目のケア」という目的に絞って、
IFERROR の使い方を初心者向けにかみ砕いて解説します。


IFERROR の基本

IFERROR の書式と動き

=IFERROR(値, エラーのときに返す値)

動きはシンプルです。

  • 「値」が正常に計算できる → そのまま結果を返す
  • 「値」がエラー(#REF! を含むすべてのエラー) → 「エラーのときに返す値」を返す

ここがポイントです。

参照切れ(#REF!)も、
0除算(#DIV/0!)、検索失敗(#N/A)、その他のエラーも、
すべてまとめて「エラー」として扱われます。


参照切れとは何か

典型的な #REF! が出るケース

参照切れの代表例はこんなものです。

  • 数式が指している列・行を削除した
  • 参照していたセル範囲の一部だけ消した
  • 元になっていたシートを削除・名前変更した

例:

=Sheet1!A2

という式があった状態で、Sheet1 を削除すると #REF! になります。

こうした #REF!見た目上、別の値に置き換える のが IFERROR の役割です。


参照切れを「空白」や「メッセージ」に置き換える

単純な参照に IFERROR をかませる

=Sheet1!A2

この参照が将来 #REF! になりえるなら、
最初から IFERROR をかませておきます。

=IFERROR(Sheet1!A2, "")

もしくは、メッセージを出したければこうです。

=IFERROR(Sheet1!A2, "参照なし")

動き:

  • 正常に参照できる → Sheet1!A2 の値をそのまま表示
  • 参照切れ(#REF!)などエラー → 空白(または「参照なし」)を表示

計算式の中で参照切れを防ぐ

参照が切れてもエラーを広げない

例えば、次のような式があるとします。

=(Sheet1!A2 + Sheet1!B2) / Sheet1!C2

どれか一つでも #REF! になると、式全体がエラーになります。

これを IFERROR で包んでおくと、
「どれかが参照切れでも空白(または 0)にしておく」ことができます。

空白にしたい場合:

=IFERROR((Sheet1!A2 + Sheet1!B2) / Sheet1!C2, "")

0 として扱いたい場合:

=IFERROR((Sheet1!A2 + Sheet1!B2) / Sheet1!C2, 0)

参照切れが起きても、
画面が #REF! だらけになるのを防げます。


他ブック・他シート参照での保険としての IFERROR

外部参照が切れたときに「0」や「前回値」を出す

他ブックを参照しているときも、構造変更やファイル移動で参照切れが起きやすいです。

例:別ブック「売上.xlsx」の Sheet1!A2 を参照している式

='[売上.xlsx]Sheet1'!$A$2

参照が切れてエラーになったときに、
0 を返したいならこうします。

=IFERROR('[売上.xlsx]Sheet1'!$A$2, 0)

「参照切れなら一旦空白でよい」というなら、

=IFERROR('[売上.xlsx]Sheet1'!$A$2, "")

としておくと、他ブックの都合で #REF! が出たときも、集計側は崩れにくくなります。


IFERROR を参照切れ対策に使うときの注意点

エラーを「完全に隠してしまう怖さ」も知っておく

IFERROR は、#REF! だけでなく あらゆるエラー を握りつぶします。

本来気づくべき

  • 範囲指定ミス
  • 関数の引数ミス
  • 単純な打ち間違い

といったエラーも、
IFERROR で上書きしてしまうと気づくのが遅れることがあります。

参照切れ防止で使うときは、

  • 参照が切れる可能性がある場所を分かっている
  • その場合は空白や 0 で済ませても問題ない

という地点に絞って使うのが安全です。


IFERROR と IFNA の違い(参照切れ文脈で)

参照切れ #REF! を扱いたいときは IFERROR 一択です。
IFNA は「#N/A だけ」を捕まえる関数なので、
#REF! を握りつぶすことはできません。

参照切れ(#REF!)を視野に入れる場合は、
必ず IFERROR を使うようにしてください。


例題

問題1

Sheet1 の A2 を参照している =Sheet1!A2 という式があります。
将来シート削除などで参照切れし #REF! になったときは、空白(””)を表示したいです。
IFERROR を使って書き直してください。

=IFERROR(Sheet1!A2, "")

問題2

=(Sheet1!A2 + Sheet1!B2) / Sheet1!C2 という式があります。
どれかが参照切れなどでエラーになったとき、エラーの代わりに 0 を返したいです。
IFERROR を使って式を書き直してください。

=IFERROR((Sheet1!A2 + Sheet1!B2) / Sheet1!C2, 0)

問題3

別ブック [売上.xlsx]集計 シートの B2 を参照している
='[売上.xlsx]集計'!$B$2 という式があります。
参照切れでエラーになった場合は「参照なし」と表示したいです。
IFERROR を使って書き直してください。

=IFERROR('[売上.xlsx]集計'!$B$2, "参照なし")

問題4

=VLOOKUP(A2, Sheet1!$A$2:$C$10, 2, FALSE) という式があります。
参照範囲の列削除などで #REF! になった場合、空白を表示したいです。
IFERROR を使って式を書いてください。

=IFERROR(VLOOKUP(A2, Sheet1!$A$2:$C$10, 2, FALSE), "")

問題5

=(Sheet1!A2 + Sheet1!B2) という式を多くの行にコピーして使っています。
将来的に Sheet1 を変更する可能性があり、参照切れが起きた行では「※要確認」と表示したいです。
IFERROR を使って式を書き直してください。

=IFERROR(Sheet1!A2 + Sheet1!B2, "※要確認")

まとめ

参照切れ防止という文脈での IFERROR の役割は、

  • 参照が正常ならその値をそのまま出す
  • 参照が切れたり他の理由でエラーになったら、
    空白・0・メッセージなど「代わりの値」に置き換える

という「見た目と後続処理を守る保険」です。

型はただひとつ。

=IFERROR(元の参照や計算式, エラーのときに返すもの)

列やシートの構成を頻繁に変えるブックや、
他ブック参照が多い集計ファイルほど、
この 1 行を足しておくだけで「エラー地獄」をかなり防げます。

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