Excelの#REF!エラーは、数式が存在しないセルや削除された行・列・シートを参照しているときに発生します。原因は5種類に分類でき、数式バーで確認すれば3分以内に特定できます。この記事では原因の切り分けから関数別の修正手順、再発防止策まで解説します。
この記事でわかること
この記事を読むと、#REF!エラーの5つの原因パターンと3分での特定手順がわかります。VLOOKUPやINDIRECTなど関数別の修正方法も把握でき、削除前確認・絶対参照・名前付き範囲の3つの仕組みで再発防止の体制が整います。
この記事の結論
#REF!エラーの根本原因は「数式が参照しているセル・行・列・シートが、削除または上書きされた」という1点に集約されます。数式バーに表示される#REF!の箇所を正しいセル範囲に修正すれば解決でき、VLOOKUPやINDIRECTといった関数では設定値そのものの見直しが必要です。再発防止には、削除操作の前に数式の依存関係を確認する習慣が最も効果的です。
今日やるべき1つ
エラーが出ているセルをクリックし、数式バーで#REF!と表示されている箇所を確認して、正しいセル範囲に書き直してください(所要時間:約3分)。
状況別ショートカット
| 状況 | 読むべきセクション | 所要時間 |
| どの操作で壊れたか分からない | #REF!エラーの原因は5パターン | 3分 |
| VLOOKUPでエラーが出ている | VLOOKUPの#REF!は列番号ミスが原因 | 3分 |
| 今すぐ原因を切り分けたい | #REF!の原因を3分で診断 | 3分 |
| 再発させないルールを知りたい | #REF!再発防止は3つの仕組みで解決 | 5分 |
#REF!エラーの原因は5パターン
#REF!エラーが突然表示されると、どこから手をつければよいか途方に暮れることも珍しくありません。まずは原因のパターンを把握することで、修正の入口が見えてきます。
参照セル・行・列の削除で#REF!が発生
#REF!エラーの最も多い原因は、数式が参照しているセル・行・列を削除したことです。たとえばB列の値を参照していた数式がある状態でB列を削除すると、Excelはその参照先を見つけられなくなり、数式が入っていたセルに#REF!と表示します。
行の削除でも同様のことが起きます。5行目を参照していた数式がある状態で5行目を削除すると、参照先が消えた時点でその数式は#REF!を返します。Microsoftのサポートページによると、この「削除による参照切れ」が#REF!エラーの代表的な発生原因と明記されています。削除は元に戻せない操作と思われがちですが、Ctrl+Zで直前の操作を取り消せば参照が復元されます。削除後すぐにエラーに気づいた場合、修正は10秒以内に完了します。
なお、Excelが重くなって作業が滞っている場合は、Excel重い原因と軽くする手順も合わせて確認しておくと、スムーズに修正作業を進められます。

シートの削除・名前変更で#REF!が発生
別シートのセルを参照している数式がある場合、そのシートを削除したり名前を変更したりすると#REF!エラーが発生します。たとえば=Sheet2!B3という数式がある状態で「Sheet2」を削除すると、数式は=#REF!に変わります。「Sheet2」を「売上データ」に名前変更した場合も、元の数式は=Sheet2!B3のままなので参照が壊れます。
見落としがちなのは、シートのタブをダブルクリックして誤って名前を変えてしまうケースです。数式側には何も通知されないため、ファイルを保存して翌日開いて初めてエラーに気づくことがあります。修正は、数式バーの#REF!部分を正しいシート名とセル番地に書き直すだけで完了します。
カット&ペーストの上書きで#REF!が発生
カット(Ctrl+X)したセルを、別の数式が参照しているセルに貼り付けると参照が壊れます。コピー(Ctrl+C)と異なり、カットは元のセルの内容を消去するため、数式側から見ると参照先が消えた状態になります。特に「この列を右に移動したい」という整理作業の最中に起きやすいミスです。
コピー&ペーストであれば元のセルは残るため参照は壊れません。カット操作を使う場合は、その列や行を参照している数式がないかを先に確認する習慣が必要です。
INDIRECTなど文字列参照関数で#REF!が発生
INDIRECT関数は文字列でセル参照先を指定する関数です。たとえば=INDIRECT(“A”&B1)という数式でB1に「101」が入力されている場合、=A101と同じ参照を生成します。「A101」が存在しないシートやブックの範囲外を指していると#REF!エラーになります。
INDIRECTで別シートを参照する場合、=INDIRECT(“Sheet2!A1”)の文字列内のシート名が間違っていたり、そのシート自体が存在しなかったりしても同様にエラーが発生します。文字列で参照先を生成する関数は、参照先の変化にExcelが自動追従できないため、VLOOKUP等より原因の特定が難しい傾向があります。
外部ブック参照でファイル移動後に#REF!が発生
別のExcelファイルのセルを参照している数式は、そのファイルが移動・削除・名前変更された場合に#REF!エラーになります。特にフリーランスの業務では、クライアントから受け取ったファイルや共有フォルダのファイルをローカルに移動したタイミングでこのエラーが発生することがあります。
CHECK
▶ 今すぐやること: エラーが出ているセルをクリックし、数式バーで#REF!と表示されている箇所を確認する(1分)
Q: #REF!エラーが複数のセルに連鎖して表示されています。どこから直せばよいですか?
A: 最初に#REF!が発生したセルから連鎖していることがほとんどです。Ctrl+Fで「#REF!」を検索し、最も上または左のセルを最初の修正対象にしてください。そのセルを直すだけで連鎖が解消されるケースが多くあります。
Q: #REF!と#VALUE!は何が違いますか?
A: #REF!は「参照先が存在しない」、#VALUE!は「数式に渡したデータの型が合っていない」という違いがあります。数式バーに#REF!と表示されていれば参照の問題、#VALUE!であれば引数の型の問題です。
#REF!エラーは数式バーで3ステップ確認
エラーの原因パターンが分かったところで、具体的な確認手順を整理します。手順は3ステップで完結します。
ステップ1:エラーセルを選択して数式バーを確認する
#REF!と表示されているセルをクリックすると、画面上部の数式バーに数式全体が表示されます。数式の中で#REF!と表示されている箇所が、参照が壊れている部分です。たとえば=SUM(A1:#REF!)と表示されていれば、範囲の終端が削除されたことを意味します。=VLOOKUP(A2,#REF!,2,0)であれば、VLOOKUPの検索範囲が削除されたことを意味します。
ステップ2:直前の操作をCtrl+Zで確認する
エラーに気づいたのが操作直後であれば、Ctrl+Zで操作を取り消してエラーが消えるか確認します。消えた場合は「その操作が原因」と特定できます。取り消してもエラーが消えない場合は、より前の操作が原因か、ファイルを開いた時点ですでにエラーがあった状態です。
ステップ3:正しいセル範囲に修正して確定する
原因が特定できたら、数式バーの#REF!の部分を正しいセル参照(例:B2:B100)に書き直し、Enterキーで確定します。正しい参照先が分からない場合は、数式バーで#REF!の箇所をドラッグして選択し、ワークシート上の正しいセル範囲をマウスでドラッグして指定する方法が最も確実です。
CHECK
▶ 今すぐやること: 数式バーの#REF!箇所をクリックし、正しいセル範囲をドラッグで選択して修正する(3分)
Q: 他人が作ったファイルで#REF!が出ています。どこから手をつければよいですか?
A: まずCtrl+Fで「#REF!」を検索してエラーのあるセルを全件把握してください。次に、エラーのあるセルを1つ選択して数式バーを見ると、#REF!と表示されている部分から原因の種類が判断できます。シート名が書かれていれば別シート参照の問題、関数名の直後であれば引数の問題です。
Q: エラーセルが多すぎて全部確認できません。
A: Ctrl+Fで「#REF!」を検索した後、「すべて検索」をクリックすると一覧が表示されます。同じパターンのエラーがまとまって表示される場合は、1か所直した後に同じ修正を他のセルにも適用できます。
VLOOKUPの#REF!は列番号ミスが原因
VLOOKUPで#REF!エラーが出るケースは、他の関数と発生パターンが異なります。VLOOKUPの設定ミスなのか、セル削除なのかで判断に迷うことがあります。
列番号が範囲の列数を超えている
=VLOOKUP(A2,B2:D10,5,0)という数式の場合、検索範囲はB2:D10でB・C・Dの3列しかありません。列番号に「5」を指定すると5列目が存在しないため#REF!エラーが発生します。列番号は1から始まり、検索範囲の列数を超えてはなりません。修正は列番号を範囲内の数値(この場合は1〜3)に変更するだけです。
なお、VLOOKUPで別シートを参照する際の原因解説も参考にすると、参照エラー全般の理解が深まります。

検索範囲が削除されてVLOOKUPが壊れた
VLOOKUPの第2引数(検索範囲)に指定していた行・列を削除すると、その部分が#REF!に変わります。=VLOOKUP(A2,#REF!,2,0)という表示がこのケースです。修正は第2引数を正しい範囲(例:$B$2:$D$100)に書き直します。絶対参照($記号)を使うと、後でコピーしても範囲がずれません。
列番号をCOLUMN関数で動的に設定していた場合の注意
列番号にCOLUMN(A1)のような数式を使っている場合、A列が削除されるとCOLUMN(#REF!)となり#REF!エラーになります。削除されたA列の代わりに正しい列を参照するようCOLUMN()内を修正するか、列番号を固定値に変更してください。
CHECK
▶ 今すぐやること: VLOOKUPの列番号の数値が、第2引数の範囲の列数以内かを確認する(2分)
Q: VLOOKUPで#N/Aと#REF!が混在しています。どちらを先に直すべきですか?
A: #REF!を先に直してください。#REF!は数式の構造が壊れている状態なので、まず参照を正しく修正してから#N/Aの原因(検索値の不一致等)を確認する順番が効率的です。
Q: VLOOKUPをXLOOKUPに変えると#REF!は出なくなりますか?
A: XLOOKUPは列番号の代わりに戻り値の列を直接指定するため、列番号の超過による#REF!は発生しません。ただし検索範囲自体を削除すれば同様にエラーになります。Excel 2021以降またはMicrosoft 365をお使いであれば、XLOOKUPへの移行を検討する価値があります。
#REF!の原因を3分で診断
自分の状況がどのパターンに当てはまるか、質問に答えて確認してみてください。エラーが発生したセルを選択し、以下の質問に順番に答えることで原因の種類を3分で絞り込めます。
Q1: 数式バーの数式に#REF!という文字が含まれていますか?
含まれている場合はQ2へ進んでください。含まれていない場合は、別のエラー(#VALUE!や#NAME?など)の可能性が高いため、数式バーの表示内容を改めて確認してください。
Q2: 直前にセル・行・列・シートの削除やカット操作を行いましたか?
「はい」の場合はQ3へ進んでください。「いいえ」の場合はQ4へ進んでください。
Q3: Ctrl+Zでエラーが消えましたか?
消えた場合はResult Aです。消えない場合は、削除操作がファイルの保存前に行われたか、複数の削除が積み重なっている状態です。ファイルのバックアップがあれば比較して、削除された行・列・シートを特定してください(Result B)。
Q4: 使用している数式はVLOOKUPですか?
「はい」の場合はResult Cです。「いいえ」の場合はQ5へ進んでください。
Q5: 使用している数式はINDIRECTですか、または別ファイルを参照していますか?
INDIRECTを使用している場合はResult Eです。別ファイルを参照している場合はResult Fです。どちらでもない場合はResult Dです。
Result A: Ctrl+Zで復元
削除操作が原因でした。Ctrl+Zでの復元後、再度削除が必要な場合は数式の依存関係を確認してから削除してください。
Result B: 参照を手動で修正
Ctrl+Zでは戻せない段階のエラーです。数式バーの#REF!部分を正しいセル範囲に書き直してください。バックアップがあれば元ファイルで参照先を確認できます。
Result C: VLOOKUPの列番号または範囲を修正
列番号が検索範囲の列数を超えていないか確認してください。超えている場合は列番号を修正します。範囲自体が#REF!になっている場合は正しい範囲を再設定してください。
Result D: シート名変更または別シート参照の修正
数式バー内のシート名が現在のシート名と一致しているかを確認し、不一致であれば正しいシート名に修正してください。
Result E: INDIRECTの文字列を修正
INDIRECT関数内の文字列で生成されるセル参照が、実際に存在するセル・シートを指しているかを確認してください。文字列を生成しているセル(例:B1に入っている値)を確認します。
Result F: 外部ファイルのパスを修正
参照しているファイルが移動・削除・名前変更されている可能性があります。「データ」タブの「クエリと接続」または「リンクの編集」で現在の参照先を確認し、正しいパスに更新してください。「リンクの編集」はExcel 2019以前では「データ」タブに表示され、Microsoft 365の一部バージョンでは「クエリと接続」内に統合されている場合があります。
CHECK
▶ 今すぐやること: Q1から順番に答えて自分のResult(A〜F)を特定し、対応する修正を実施する(3分)
Q: 診断でResultが特定できませんでした。どうすればよいですか?
A: 数式バーに表示されている数式全体をコピーし、Googleで検索するか、Microsoftサポートの修正事例と照合してください。関数名ごとに原因が異なるため、使っている関数名を含めて検索すると解決策が見つかりやすくなります。
Q: 同じ操作をしても、あるファイルでは#REF!が出てあるファイルでは出ません。なぜですか?
A: ファイルによって数式の参照の仕方が異なるためです。絶対参照($A$1形式)で設定されているファイルは行・列の削除に比較的強く、相対参照(A1形式)のみで組まれているファイルは削除の影響を受けやすい傾向があります。
#REF!再発防止は3つの仕組みで解決
エラーを直した後も同じことが繰り返されるのは、操作の習慣に原因があります。3つの仕組みを導入することで、同じ#REF!エラーを再発させない体制が作れます。
ポイント1: 削除前の数式チェックで参照切れをゼロにする
【対象】: 列・行・シートの削除を定期的に行うExcelファイルを管理しているフリーランス
【手順】: 削除したい列・行・シートを選択した後、すぐに削除を実行するのではなく、以下の順番で確認を行います。
Excel 2016以降では「数式」タブの「参照元のトレース」または「数式の検査」機能を使います。削除対象のセルを選択した状態でこのボタンをクリックすると、そのセルを参照している数式が矢印で表示されます(所要時間:1〜2分)。矢印が表示された場合は参照している数式があることを意味するため、その数式を先に修正または削除します(所要時間:2〜5分)。参照している数式がないことを確認してから、目的の列・行・シートを削除してください(所要時間:30秒)。
【なぜ効くのか】: 「削除してからエラーが出たら直す」順番より、「削除前に参照関係を確認する」順番のほうが修正時間を大幅に削減できます。削除後のエラー修正は影響範囲が見えにくいのに対し、削除前の確認は影響範囲が明示されるため、1セルずつ修正する必要がなくなります。
【注意点】: 「参照元のトレース」が表示されなかったからといって安全とは限りません。別ブックからの参照は表示されないことがあります。外部参照を使っているファイルでは、削除前にCtrl+Fで「!(外部参照の区切り文字)」を検索して外部参照の有無を確認してください。外部参照のないファイルで使う場合はこの検索は不要です。
ポイント2: 絶対参照で参照範囲のズレを防止する
【対象】: VLOOKUPやSUM等の範囲指定を含む数式を複数のセルにコピーして使っているフリーランス
【手順】: 数式を入力する際、範囲として指定するセル番地に$記号を付けて絶対参照にします(所要時間:入力時に30秒追加)。具体的には、範囲を入力する際にセルをマウスで選択後、F4キーを押すとA1が$A$1に変わります。コピーしても参照範囲がずれないことを確認してください(所要時間:30秒)。
【なぜ効くのか】: 相対参照(A1形式)は「数式をコピーしたとき、コピー先に合わせて参照もずらす」機能であるため、固定した範囲を参照したいときに使うと意図しない参照変更が起きます。絶対参照($A$1形式)はどのセルにコピーしても同じセルを参照し続けるため、VLOOKUPの検索範囲のように「ずれてほしくない参照」に適しています。
【注意点】: 行ごとに参照先が変わる設計(例:各行のAさんのデータを参照する)では、列だけ固定して行は相対にする「複合参照($A1やA$1)」が適切です。すべてに絶対参照を適用すると、意図した行ごとの変化がなくなります。
ポイント3: 名前付き範囲で参照名を固定する
【対象】: 同じ範囲を複数の数式から参照しているExcelファイルを管理しているフリーランス
【手順】: 参照したいセル範囲を選択し、画面左上の「名前ボックス」(セル番地が表示されている欄)にわかりやすい名前(例:「売上データ」「取引先マスタ」)を入力してEnterを押します(所要時間:1分)。次に数式内でセル番地の代わりにこの名前を使います(例:=VLOOKUP(A2,取引先マスタ,2,0))(所要時間:1分)。名前付き範囲は範囲が移動しても自動追従するため、列や行を移動しても参照が壊れません。
【なぜ効くのか】: セル番地による参照は列・行の挿入・削除に敏感ですが、名前付き範囲は定義された範囲が自動的に追従するため、誤って行を削除しても参照先が自動調整されます。複数人編集での参照切れ防止に特に効果的です。ただし名前付き範囲自体を削除すると#REF!が発生するため、名前の管理(「数式」タブの「名前の管理」)は定期的に確認してください。
【注意点】: 名前付き範囲は同じブック内でしか有効ではありません。別ブックに数式をコピーした場合、名前付き範囲の定義がないため#REF!が発生します。ブックをまたいだコピーを行う場合は、コピー先のブックでも同じ名前の範囲を定義してください。
ポイント4: シート名変更のルール化で連鎖エラーを防止する
【対象】: チームやクライアントと共有するExcelファイルを管理しているフリーランス
【手順】: シート名の変更前に、Ctrl+Fで変更予定のシート名を検索し、ヒット件数を確認します(所要時間:1分)。ヒットが0件であれば安全に変更できます。ヒットがある場合は、それらの数式が変更後のシート名で動作するか確認してから変更します(所要時間:2〜5分)。変更後にCtrl+Fで「#REF!」を検索して連鎖エラーが発生していないかを確認してください(所要時間:1分)。
【なぜ効くのか】: 「シート名変更の前には参照の有無を確認する」というルールを採用することで、チーム内での連鎖エラーを発生件数ゼロに近づけられます。特にファイルを複数人で使う環境では、作成者以外がシート名を変更したことで作成者の数式が壊れるケースが発生します。事前確認のルール化だけで、事後修正に費やす時間を削減できます。
【注意点】: Excelはシート名の変更を元に戻せる(Ctrl+Zが有効)場合と有効でない場合があります。ファイルの保存後に名前変更した場合はCtrl+Zで戻せないことがあるため、変更前の確認が唯一の防止策です。
ポイント5: 外部参照ファイルの移動ルール化で#REF!を未然に防ぐ
【対象】: 複数のExcelファイルを連携させて売上管理や集計を行っているフリーランス
【手順】: 外部参照を含むファイルを移動する場合は、移動の前に参照元と参照先のファイルを両方開いた状態で移動を実施します(所要時間:2分)。両方開いている状態でのファイル移動はExcelがリンクを自動更新する場合があります。移動後に参照しているファイルを開き、「データ」タブの「リンクの編集」(バージョンによっては「クエリと接続」)で参照先のパスが正しいかを確認します(所要時間:2分)。参照先パスが古いままの場合は「ソースの変更」で新しいパスを指定してください(所要時間:2分)。
【なぜ効くのか】: 外部参照は保存時のファイルパスで記録されているため、ファイルを移動するとパスが変わり参照が切れます。フォルダ構成ごと移動する場合は参照関係が維持されますが、1ファイルだけ移動する場合は必ずパスの確認と更新が必要です。
【注意点】: 外部参照を含むファイルをクライアントに送付する場合、受け取ったクライアントのPC上では参照先ファイルが存在しないため、開くたびに「リンクを更新しますか?」というメッセージが表示され、更新しても#REF!が出ます。送付前に外部参照を値貼り付けで固定するか、外部参照を含まない形式に変換してから送付してください。
「なんでいきなりREFエラー?と焦ったけど、シート名を変えてたのが原因だった」という経験を持つユーザーの報告があります(Excelのエラーで焦った話 – note)。操作直後にエラーが出た場合は、直前の操作に原因がある可能性が高く、Ctrl+Zで確認するのが最初の一手です。
また、ExcelのPDF変換を3ステップで完了する方法のような関連業務も効率化しておくと、Excelファイル全体の管理がよりスムーズになります。

CHECK
▶ 今すぐやること: 今使っているExcelファイルで削除してよいか迷っている列・行があれば、「数式」タブの「参照元のトレース」で参照の有無を確認する(2分)
Q: 他人が作ったファイルに再発防止策を導入するのは難しいですか?
A: ポイント2(絶対参照)とポイント3(名前付き範囲)は、既存のファイルを一から作り直さなくても、修正のついでに数式を絶対参照に変えるだけで導入できます。全部をまとめて対応する必要はなく、修正したセルから順番に習慣として取り入れてください。
Q: フリーランスの請求書ファイルで#REF!が出ました。何を確認すればよいですか?
A: 請求書ファイルでよくある原因は、「前月のデータをコピーして今月用を作成したとき、元のシートを削除または名前変更した」ケースです。まず数式バーで#REF!の箇所を確認し、シート名が書かれている場合はそのシートが存在するかタブで確認してください。
#REF!エラーは5原因を削除前確認で防止
#REF!エラーの根本原因は「参照先が存在しなくなった」という1点であり、発生パターンは削除・シート名変更・カット操作・関数設定ミス・外部ファイル移動の5種類に分類できます。
修正の第一歩は数式バーで#REF!の箇所を特定することで、VLOOKUPでは列番号、INDIRECTでは文字列の参照先、外部参照ではファイルパスをそれぞれ確認します。エラー発生直後であればCtrl+Zで原因操作を特定でき、多くの場合3分以内に修正が完了します。
ExcelのVBAを活用した業務自動化を取り入れると、参照の管理や定型作業の効率化が一段と進み、エラーそのものを発生させにくい環境を構築できます。

今後の業務で同じエラーを繰り返さないために、削除前の「参照元のトレース」確認と絶対参照の習慣化が最も費用対効果の高い対策です。フリーランスの業務では、請求書や売上管理表のエラーが請求遅延やミスに直結するため、今日確認した手順を手元に残しておいてください。
| 状況 | 次の一歩 | 所要時間 |
| 今すぐエラーを直したい | 数式バーで#REF!の箇所を特定し、正しい範囲に修正 | 3分 |
| VLOOKUPのエラーを直したい | 列番号が範囲の列数以内かを確認し、超えていれば修正 | 2分 |
| 再発防止の仕組みを作りたい | 「参照元のトレース」で削除前確認を習慣化 | 2分/回 |
| チームで使うファイルを守りたい | シート名変更前にCtrl+Fで参照の有無を確認するルールを決める | 1分の確認 |
#REF!エラーに関するよくある質問
Q: #REF!エラーはExcelとGoogleスプレッドシートで同じですか?
A: 発生原因と表示は同じです。ただしGoogleスプレッドシートでは外部参照のリンク管理機能の場所が異なります。基本的な確認手順(数式バーで#REF!の箇所を確認→正しい範囲に修正)はどちらでも共通して使えます。スプレッドシートの基本操作も合わせて確認すると、Excelとの違いを把握しやすくなります。

Q: #REF!エラーのセルを見つけるショートカットはありますか?
A: Ctrl+Fで「#REF!」を検索する方法が最も汎用的です。また「ホーム」タブの「検索と選択」から「数式」を選び、「エラー」にチェックを入れると、エラーが含まれるセルを一括選択できます。複数のエラーを一度に把握したい場合はこの方法が効率的です。
Q: #REF!エラーを意図的に無視したい場合はどうすればよいですか?
A: IFERROR関数を使い、=IFERROR(元の数式,””)と記述するとエラー時に空白を表示できます。ただし根本的な参照切れは残ったままなので、エラーの原因を把握した上で表示上の対応として使ってください。エラーを隠すだけでは、後で別の数式がそのセルを参照したときに問題が連鎖する可能性があります。