概要
別ブックを参照している数式で、こんなことが起きていませんか?
- 参照先のブックが開いていないときに
#REF!や#N/Aが出る - ファイル名やシート名が変わって、一時的にエラーだらけになる
- ネットワークドライブ上のリンクが不安定で、たまに外部参照エラーになる
こういう「外部参照が原因のエラー」は、
シートの見た目も計算も一気に崩す“事故要因”です。
ここで使えるのが IFERROR 関数で外部参照を包み込むテクニックです。
外部参照が失敗したときだけ、別の値やメッセージに差し替えることで、
「リンク先が一時的にダメでも、表は落ち着いて動き続ける」状態を作れます。
IFERROR の基本(おさらい)
IFERROR の書式はとてもシンプルです。
=IFERROR(計算式, エラーのときに返す値)
動きは次の通りです。
計算式の結果が正常なときは、その結果をそのまま返す。
計算式の結果がエラー(#REF!, #N/A, #VALUE!, #NAME? など)なら、第 2 引数「エラーのときに返す値」を返す。
外部参照エラーも、結局は「計算式の結果がエラー」である点では同じなので、
IFERROR で“つかまえて別の値に差し替える”ことができます。
外部ブックの参照を IFERROR で包む基本パターン
参照先が壊れたら 0 にする
例として、別ブック「売上データ.xlsx」の A2 を参照している式を考えます。
通常の外部参照はこうです。
='C:\Data\[売上データ.xlsx]Sheet1'!$A$2
ファイル名が変わったり、ファイルが見つからなかったりすると、
この部分が #REF! や #NAME? などのエラーになります。
ここに IFERROR をかぶせるとこうなります。
=IFERROR(
'C:\Data\[売上データ.xlsx]Sheet1'!$A$2,
0
)
意味はこうです。
正常に参照できた場合は、その値をそのまま返す。
何らかの外部参照エラーになった場合は、代わりに 0 を返す。
「とりあえずエラーを 0 扱いしたい」という場面での基本形です。
参照先が壊れたら空白にする
同じ考え方で、エラーを空白にしたいならこうです。
=IFERROR(
'C:\Data\[売上データ.xlsx]Sheet1'!$A$2,
""
)
見た目をきれいに保ちたいときや、
エラーセルがグラフや印刷に悪影響を出してほしくないときに使います。
シートごと外部参照している場合のエラー回避
シート丸ごとリンクを IFERROR で守る
よくあるのが、「集計ブック」から「部門別ブック」を参照しているパターンです。
例として、次のような式があるとします。
='[営業1課.xlsx]月次'!$B$5
ここも同様に、ファイル名・シート名が変わるとエラーになります。
これを IFERROR で包むとこうです。
=IFERROR(
'[営業1課.xlsx]月次'!$B$5,
"参照エラー"
)
これで、リンクが切れても #REF! ではなく「参照エラー」と表示され、
ユーザーに“何が起きているか”を分かりやすく伝えられます。
外部参照を使った計算式全体を IFERROR で守る
外部参照を含む計算式ごとエラー回避する
単純な値参照ではなく、外部参照を使った計算をしている場合があります。
例:
='[売上データ.xlsx]1月'!$B$2 * '[売上データ.xlsx]1月'!$C$2
どちらか一方でも参照エラーになると、
結果は当然エラーで返ってしまいます。
これをまとめて IFERROR で包みます。
=IFERROR(
'[売上データ.xlsx]1月'!$B$2 * '[売上データ.xlsx]1月'!$C$2,
0
)
あるいは、エラーのときにメッセージを出したいならこうです。
=IFERROR(
'[売上データ.xlsx]1月'!$B$2 * '[売上データ.xlsx]1月'!$C$2,
"売上データ参照エラー"
)
「外部参照を使った複合計算式は、最後に必ず IFERROR で包む」
これはかなり実務的な定石です。
外部参照の有無で処理を切り替える応用
外部参照できないときは内部データにフォールバックする
もう少し実務寄りのパターンとして、
「外部参照が失敗したら、社内の簡易データを使う」という考え方があります。
例:
優先的には「本番の売上ブック」を参照する。
もし参照できなければ、「予備シートのデータ」を使う。
=IFERROR(
'[本番売上.xlsx]集計'!$B$2,
予備シート!$B$2
)
動きとしてはこうです。
本番売上ブックが正しく参照できるときは、その値を使う。
外部参照エラーが起きた場合だけ、予備シートの値を使う。
外部ファイルに依存しすぎると不安なとき、
こういう“フェイルセーフ”を仕込んでおくと安心感が一気に上がります。
IFERROR を使うときの注意点(外部参照編)
エラーを隠しすぎない
外部参照エラーを全部 0 や空白にしてしまうと、
本来「リンクが切れているから直さないといけない」という問題に
誰も気づかなくなるリスクがあります。
そこで、次のような工夫をおすすめします。
エラー時の値にメッセージを入れる
例:"売上ファイル未接続" など
チェック用の列を別に作って、ISERROR でフラグを立てる
例:=IF(ISERROR(外部参照式), "要確認", "")
表の見た目を守るために IFERROR を使いつつ、
「エラーが起きていること自体」はちゃんと検知できる状態にしておくのが大事です。
例題
問題1
C:\Data フォルダにある「売上.xlsx」の Sheet1!A2 を参照する式が、
ファイルが見つからないときにエラーになっています。
エラーのときは 0 を返すようにしたいです。
IFERROR を使った式を書いてください。
=IFERROR('C:\Data\[売上.xlsx]Sheet1'!$A$2, 0)
問題2
'[営業1課.xlsx]月次'!$B$5 を参照しており、
ファイル名やシート名の変更で #REF! が出ることがあります。
エラーのときは「参照エラー」と表示したいです。
その式を書いてください。
=IFERROR('[営業1課.xlsx]月次'!$B$5, "参照エラー")
問題3
別ブック「売上データ.xlsx」の 1月シートから、
数量(B2)と単価(C2)を参照して掛け算しています。
='[売上データ.xlsx]1月'!$B$2 * '[売上データ.xlsx]1月'!$C$2
この式が、参照エラーのときに 0 を返すようにしたいです。
IFERROR で包んだ式を書いてください。
=IFERROR('[売上データ.xlsx]1月'!$B$2 * '[売上データ.xlsx]1月'!$C$2, 0)
問題4
本番の売上ブック「本番売上.xlsx」の 集計!B2 を優先的に参照し、
もし参照できない(外部参照エラー)ときは、
予備シート Backup!B2 の値を使いたいです。
IFERROR を使った式を書いてください。
=IFERROR('[本番売上.xlsx]集計'!$B$2, Backup!$B$2)
問題5
外部参照式 '[売上.xlsx]Sheet1'!$A$2 を IFERROR で包み、
エラーのときは空白ではなく「売上ファイル未接続」と表示したいです。
その式を書いてください。
=IFERROR('[売上.xlsx]Sheet1'!$A$2, "売上ファイル未接続")
まとめ
「外部参照エラー回避 → IFERROR」のポイントは、次の 3 つです。
外部参照で発生する #REF! や #N/A も、普通のエラーと同じく IFERROR で捕まえられる。
エラーを 0 や空白、あるいはメッセージに変えることで、表を“壊さずに”保てる。
ただし、エラーを完全に隠さず、「どこで問題が起きているか」を別途分かるようにしておくのが安全。
型としては、まずこの形を手に馴染ませておくと良いです。
=IFERROR(外部参照式, エラー時に返す値)
外部ブックに依存したシートを作るときは、
一度「このリンクが切れたらどうなるか?」を想像して、
IFERROR を使った“保険”を仕込んでおくクセをつけてみてください。
