目次
#REF!の意味
#REFエラーは、無効なセルを参照すると出るエラーです。「REF」は英語のREFerence(リファレンス:参照)の頭文字を取っています(多分)。カタカナで「リファレンスエラー」と覚えれば分かりやすいです。
「無効なセル参照」さえ理解できれば、おのずと修正方法も分かります。次項から、参照が無効になるケースを紹介します。
#REFエラーはほとんどの場合修正可能です。なるべく、回避する方法(エラーを非表示にする等)を選択しないで下さい。
参照が無効になるケース
参照しているセルが削除されている
数式を作成した後に、参照しているセルを削除すると#REF!を返します。

例えば、このような表でD列に
=B列*C列の式が入力されている場合、

B列を削除するとC列(元D列)が#REF!を返します。
- 参照セルが存在しない場合の修正方法は?
Undo(元に戻す)が効くのであれば、元に戻して下さい。効かない場合は削除前と同じ状態に作り直すしかありません。
UndoのショートカットはCtrl+Zです。

B列が見た目上不要なのであれば、列を非表示にしましょう。B列を選択して右クリック→非表示を選択します。

不正な参照を含む関数
関数内で指定した参照範囲から外れたセルを参照すると#REF!を返します。
VLOOKUP関数の場合

- =VLOOKUP($G$1,$A$2:$D$5,5)
引数列番号が5になっています。参照範囲は4列(A列~D列)しかないので範囲外となり、#REF!を返します。
INDEX関数の場合

引数[列番号]が5になっています。参照範囲は4列(A列~D列)しかないので範囲外となり、#REF!を返します。
OFFSET関数の場合

引数行の指定が-1になっているので、シート外を参照する事になり、#REF!を返します。
- 参照範囲がワークシート外の場合の修正方法は?
1.指定した参照範囲内を指定して下さい。
- =VLOOKUP($G$1,$A$2:$D$5,2)
- =INDEX($A$2:$D$5,3,2)
2.シート内を参照して下さい。
INDIRECT関数または動的配列数式が閉じているファイルを参照する
- =INDIRECT(“‘[test.xls]”&A1) …別のファイルを参照している場合、そのファイルが閉じていると#REF!を返します。
- INDIRECT関数または動的配列数式で#REF!が出た場合の修正方法は?
1.参照先ファイルを開いてF9で更新して下さい。
2.参照先を自身のファイルに変更して下さい。
エクセルのバージョンが古い場合
EXCEL2007より古いバージョン(97–2003)は行列数が65,536行×256列しかありません。古いバージョンでファイルを開いて、そのファイルが65,536行×256列より外を参照していた場合は#REF!を返します。
互換性チェックで対象セルを検索する事は可能ですが、修正は手作業になります。
- 古いバージョンのエクセルで#REF!が出た場合の修正方法は?
- 参照を65,536行×256列内に収めます。参照外にあるセルをコピーまたは切り取りで65,536行×256列内に収めて下さい。別シートを使うと楽かもしれません。
- IFERROR関数 で非表示にする
修正は不要だけど見た目だけどうにかしたい場合は、IFERROR関数で非表示にします。
おすすめは古いバージョンを使わないことです。2007以降のバージョンを使う事を最優先に検討しましょう。
その他のエラーも解説しています。気になる項目があれば、是非読んでみて下さい。
エクセルエラーまとめ
【Excel】エラー全般対処法まとめ
エクセルのエラーについてまとめました。流し読みしてもらえれば、大半の疑問は解消します。詳細記事へのリンクも貼ってあるので詳しく知りたい人はリンク先も読んでみ…