Excel関数 逆引き集 | 外部参照エラー回避 → IFERROR

Excel
スポンサーリンク

概要

別ブックを参照している数式で、こんなことが起きていませんか?

  • 参照先のブックが開いていないときに #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 を使った“保険”を仕込んでおくクセをつけてみてください。

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