概要
シートを整理しているときに、
- 列や行を削除したら、あちこちが
#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 行を足しておくだけで「エラー地獄」をかなり防げます。
