PR

Excelの#REF!エラー完全解説|初心者〜実務者まで使える原因別対処法

Excel
記事内に広告が含まれています。

Excelを使っているときに、「#REF!」エラーが出てきて焦ったことはないでしょうか?

実はExcelではよくあるエラーで、原因をしっかり確認すれば解消できるエラーです。
ただ原因の探し方であったり、どう対応したらいいの?と迷われる方もいらっしゃると思います。

本記事では、初心者向けの基本対処法と、実務者向けの応用対処法をまとめて解説します。

🔍今回の記事で分かること
  • #REF!エラーが発生する原因
  • #REF!エラーの基本的な対処法
  • 実務で役立つエラー対策

#REF!エラーとは?

「#REF!」エラーとは、参照先がないですよというエラーになります。REF=reference(参照)という意味ですね。

ポイントは数式が壊れたのではなく、何らかの原因で参照が切れてしまったということです。

REFエラーのよくある原因

「#REF!」エラーは、参照先がないことが原因で発生するエラーです。
ここでは、REFエラーになる主な原因を紹介します。使っているファイルでエラーが発生している場合、どの原因が考えられるかチェックしてみてください。

セル削除によるエラー

よく発生しがちなのが、参照先削除によるエラーです。
数式で参照していたセル、シート、別ファイルがなくなってしまうケースですね。当然ながら参照先がなくなってしまいますので、Excelとしても「参照先はどこ?」となってしまうわけです。

コピーや移動で参照がズレた

数式のコピーが原因で、「#REF!」エラーが発生することがあります。
例えばC列にA列を参照する数式を入力したとします。このC列の数式をB列にコピーすると、以下のように参照エラーが発生してしまいます。これは相対参照によるもので、行列をずらした分参照先がずれるため、エラーが発生してしまったということです。

外部Excelファイルのリンク切れ

外部のExcelを参照している場合、その参照先がなくなることでも「#REF!」エラーは発生します。
例えば参照先のファイルがなくなったり、格納先が変わったり、シート名が変わったりすると、当然ながら「参照先がないよ」とExcelがヘルプを出すわけです。参照先のリンク先やシート名などは、当然ながら自動で変更はされないので、参照エラーが発生してしまいます。

関数の指定ミス

関数で参照範囲外を指定してしまうケースも、「#REF!」エラーが発生する原因です。
例えば、VLOOKUP関数で範囲をA:B列に指定しているのに、指定値を3にした場合などです。範囲は2列分しかないので、3列目は範囲外になってしまいますね。その場合も参照先がないということでエラーになってしまいます。

エラー発生防止のポイント

では、「#REF!」エラーが発生しないようにするにはどうしたらいいでしょうか。
ここでは、「#REF!」エラーを防止するためのポイントを説明します。

参照セルをむやみに削除しない

参照先を削除してしまうと、REFエラーが発生する原因になります。
そのため、参照セルをむやみに削除しなければ、エラーは発生しません。身も蓋もない話になってしまいますが・・・。まずはファイルの中身を確認してから、不要なセル・ファイルを削除しましょう。

参照セルをむやみに削除しないためには、数式のトレース」を使って事前に数式を確認することをおすすめします。後述しますので、ぜひチェックしてみてください。

絶対参照と相対参照の違いを理解する

絶対参照と相対参照を使い分けることも重要になります。

絶対参照とは、($A$1)のように行や列の前にドルマークみたいなものが付いている状況のことで、参照先を固定することができます。
参照先が固定されるので、数式をコピーしたとしても、参照外になることはありません。
行のみ・列のみで固定することもできるので、参照ズレの対策として有効な方法です。

💡ポイント
  • 「F4」キーを押すことで、参照パターンを変更できます。①絶対参照→②行の絶対参照→③列の絶対参照→④相対参照の順番に切り替わります。

絶対参照・相対参照に関してはこちらで詳しく解説していますので、チェックしてみてください。

外部のExcelファイルを参照している場合、変更内容を確認する

外部のExcelファイルを参照していたが、「#REF!」エラーが発生した場合、参照していた外部のExcelファイルにどのような変更があったかを確認することが大事です。
基本的なことですが、原因を特定しない限り、参照エラーを解消することはできません。

しかし、外部のExcelファイル参照エラーの多くは、
・参照していたファイルの格納先が変わった
・参照していたファイルの名前が変わった

というケースが多いと思います。

この場合、ブックのリンクという機能を活用することで、発生したエラーを解消することができます。
後述しますので、ぜひチェックしてみてください。

複雑な数式を整理する

こちらも非常に重要なエラー防止策です。
エラーが発生したときに大変なのが、原因を突き止めることです。つまり、数式が複雑であればあるほど、見にくければ見にくいほど、エラーの原因を突き止めることが困難になります。

Excelファイルは多くの人と共有すると思います。他人が作った数式を解析するのって、結構骨が折れる作業ですよね。なので、数式をシンプルにするに越したことはないんです。
過去に私も困った経験があるため、誰が見ても分かりやすい数式にすることは大きな意味があります。

具体的な対策の一つとして、名前の定義を使用する方法があります。
こちらも後述しておりますので、ぜひチェックしてみてください。

実務者が知っておくと便利な対処方法

上記では、「#REF!」エラーを防止するためのポイントを説明しました。
ここからは、「#REF!」エラーの発生防止/発生した場合の具体的な対策を紹介していきます。
私自身、多くのExcelファイルを扱うので、よく「#REF!」エラーを見かけます。そのエラー解消に使用しているテクニックの一部を紹介します。

エラーの影響範囲を調べる(数式のトレース)

「数式のトレース」機能を使うことで、その数式がどこを参照してるかが可視化できます。

数式がより複雑だと、何をしているのか?どこを参照しているかが分かりにくいですよね。この「数式のトレース」機能は、どのセルを参照しているか、どのセルから参照されているかが矢印が表示されるので、視覚的に理解しやすい便利な機能です。これを使うことで、ここは参照されているセルだから削除してはいけないな、とむやみなセル削除を防止することができます。

「数式のトレース」は、「数式」タブの「ワークシート分析」部分にあります。

上記の画像でも分かるとおり、「数式のトレース」は、「参照元のトレース」と「参照先のトレース」の2種類あります。
2つの違いについては、以下のとおりとなります。
・参照元のトレース:選択しているセル影響を与えるセルを示す矢印を表示
・参照先のトレース:選択しているセル影響を与えるセルを示す矢印を表示

この二つのトレースの違いは、以下の画像を見ていただけるとイメージしやすいと思います。
青色の矢印が「トレース」となります。

セルD4は「B4×C4」の計算結果となるため、参照元のトレースは「B4」と「C4」を示します。
逆にセルD4は、セルD7(=SUM(D2:D6))の計算結果の一部であるため、参照先のトレースは「D7」を示すことになります。

このように、「数式のトレース」を使用することにより、どのセルに影響するかが可視化できるため、数式の確認には便利な機能となります。

エラーを一時的に隠す(IFERROR関数)

エラー解消ではなく、一時的にエラー値を表示したくない場合は、IFERROR関数が便利です。
報告書や取引先資料など、人に見せる資料にエラーが表示されていると、資料内容に影響はないにしても、見栄えが良くないですよね。あくまで「#REF!」エラーを見せないだけで、根本的な参照エラーは解決していませんが、見せる資料などには便利なテクニックとなります。

IFERROR関数の書式は以下の通りです。

=IFERROR(値,エラーの場合の値)

「エラーの場合の値」に、エラーの場合に表示したい値を設定します。
(私はよく「-」を設定し、自分ではエラー値かどうか分かるようにしています)

このIFERROR関数を使うことで、「#REF!」エラーが発生しても、指定した値を表示してエラー値を非表示にすることができます。

外部のExcelファイルへのリンクを変更する(ブックのリンク)

外部のExcelファイルの格納先が変わった、もしくはファイル名が変わった場合、「ブックのリンク」を使うことで、リンクしなおすことが可能です。

「ブックのリンク」は、「データ」タブの中に存在します。

「ブックのリンク」を選択すると、右側にリンクしている外部のExcelファイル一覧が表示されます。
そのExcel一覧の「・・・」を選択することでメニューが開きます。

今回は、「参照しているファイルの格納先が変わった」、もしくは「ファイル名が変わった」ケースですので、「ソースの変更」で参照するExcelファイルを変更すれば、エラーが解消します。

複雑な数式を管理するコツ(名前の定義)

エラーを発生させないためには、数式をいかに分かりやすくできるかがポイントとなります。
Excelファイルを作り込んでいると、どうしても数式が複雑になりがちですよね。
そんなときは「名前の定義」を活用することで、数式の管理が楽になります。

例えば以下のような社員名簿があり、社員番号からVLOOKUP関数で社員名を検索するとき、「A1:E13」みたいにセル番地で範囲を指定しますよね。
それはもちろん問題ないのですが、もっと複雑な数式・広い範囲になると、エラーが発生したときはそれを読み解く作業が負担になってしまいます。
ぱっと見ただけで分かる数式になっていると、エラー発生時の対応も楽になりそうですよね。

=VLOOKUP(G3,A1:E13,2,0)

「名前の定義」は、いわば「セル範囲にニックネームをつける」ようなものです。
なので、この範囲(A1:E13)にニックネームをつけて、分かりやすくしてあげます。

「名前の定義」のやり方については以下のとおりです。

1.「数式」タブの「名前の定義」を選択

2.「名前」に「社員名簿」、「参照範囲」に名簿の範囲を指定して「OK」
(分かりやすい名前であれば何でもOKです)

これで、「A1:E13」の範囲が、「社員名簿」という名前として登録されました。
では、これで実際にVLOOKUP関数を使って、社員番号から雇用形態を引っ張ってみましょう。

=VLOOKUP(G3,社員名簿,5)

このとおり、「社員名簿」がちゃんと範囲として認識され、雇用形態を引っ張ることができました。
こうやってみると、数式もすっきりしているので、非常に分かりやすくなっています。

「便利なのはわかったけど、範囲が変わった場合はどうすればいいの?
と思われた方もいらっしゃると思います。
そのような場合も簡単に対応することができますので、安心してください。

どのように範囲を変更するかというと、「名前の管理」から変更するだけでOKです。
1.「数式」タブ→「名前の管理」を選択
2.変更したい「名前」を選択し、「参照範囲」を変更、「閉じる」を選択

今回は参照範囲を1行増やし、「A1:E14」に変更してみます。

「閉じる」を選択すると、「保存しますか?」とメッセージが出るため、「はい」を選択します。

これで、社員名簿の「参照範囲」が変更されました。
試しに1行足したデータをVLOOKUP関数で検索すると、ちゃんと雇用形態を引っ張ってくることができています。

このように、数式をわかりやすくすることで、参照エラーが発生しにくい状況を作ることは重要です。
「名前の定義」を使うことにより、データの増減があってもメンテナンスがしやすいので、ぜひ活用してみてください。

ちなみに、「名前の定義」は様々な場面で活躍します。
以下の記事では、「名前の定義」を利用して、項目連動型プルダウンリストの作り方を紹介しています。「名前の定義」の基本的な作り方を詳しく解説していますので、こちらもぜひチェックしてみてください。

まとめ:エラーは起きるもの。ただし原因を突き止めれば必ず解決できる!

「#REF!」エラーは、参照がないときに発生するエラーで、Excelではよく発生します。
エラーが発生したときは、セル削除や参照ズレ、外部リンクや関数指定ミスを重点的にチェックし、紹介した対処法を試してみてください。

エラーが発生するのには、必ず理由があります。
初心者は特に焦ってしまいがちですが、原因を突き止めて修正すれば問題なく解決します。
この記事を読んだことで、あなたの困っている状況が解決できれば幸いです。

この記事が役に立ったと思った場合、ブックマークやシェアしてもらえると嬉しいです。また、質問やこんな方法を紹介してほしい!などありましたら、お気軽にコメントしてください。

最後まで読んでいただき、ありがとうございました。

ろじゃー

仕事・子育てに奮闘中の社会人です。
仕事でも日常生活でも、ちょっとでも便利になることが紹介できるブログを書いています!
 
仕事柄、PC操作やエクセル、VBAなどは得意です!
Excel歴は10年以上の事務職。
関数やVBAを活用して、資料作成やデータ分析をはじめとした様々な業務の効率化・自動化に取り組んできました。
 
このブログでは、実際の業務で使える効率化テクニックを発信しています。
「わからない」や「困った」など問題を抱える方や、もっと効率化したいと思っている方に、少しでも役立てれば幸いです!

ご質問・ご相談など、お気軽にご連絡ください。

ろじゃーをフォローする
ご質問・ご相談はこちらへ!
 ろじゃー|日々、ちょっとずつ良くなることを目指すブロガー
Excel歴10年以上。VBAや関数、業務効率化などを発信中。
📩 お問い合わせはこちら
Excel
シェアする
ろじゃーをフォローする

コメント

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