#REF!


エラーの原因

計算式内で使っているセル参照に誤りがあるときなどに表示されます。

下図のセルD2は「=A1+B1」という数式で、セルA1とセルB1を合計しています。ここでA列全体を削除すると、セルD2の数式は「#REF!」エラーになります。

参照しているセルを含む列全体や行全体を削除すると、数式から参照するセルがなくなってしまうので「#REF!」エラーになります。このとき、数式全体がエラーになるのではなく、削除されたセルのアドレスだけが「#REF!」に置き換えられます。

ここでいう削除とは、Deleteキーを押してセル内のデータを消去する操作ではありません。[編集]メニューの[削除]や、右クリックメニューの[削除]を実行して表示される[削除]ダイアログボックスで行うセルそのものの削除です。列全体や行全体だけでなく、[左方向にシフト]や[上方向にシフト]を実行しても「#REF!」エラーが発生します。

「#REF!」エラーは、数式内で使用しているアドレスの変化が原因ではありません。たとえばセルD2に「=A1+B1」という数式が入力されているとき、B列の列を挿入しても数式は「#REF!」エラーにはならず「=A1+B1」が「=A1+C1」に自動調整されます。

ただし、削除したセルが関数の引数として指定されている場合は、「#REF!」エラーにならずアドレスが自動調整されることがあります。下図のセルD2には「=SUM(A1:C1)」という関数でセルA1からセルC1を合計しています。ここでB列全体を削除すると、SUM関数の引数が調整されてセルD2の数式は「=SUM(A1:B1)」となります。

では、関数の引数に指定したアドレスはすべて自動調整されるのかというと、実はそうではありません。下図のセルD2には「=LEFT(A1,B1)」という関数式が入力されています。LEFT関数は、1番目の引数に指定したデータの左から、2番目の引数に指定した数の文字を返す関数です。図ではセルA1の「東京都新宿区」から、セルB1で指定した「3」文字分の「東京都」を返しています。

ここで、文字数が入力されているB列全体を削除すると、セルD2の関数式はエラーになります。

もうひとつ「#REF!」エラーの原因で多いのは、数式が他のワークシートを参照しているとき、参照しているワークシートを削除してしまうことです。下図のセルB2は「=Sheet2!A1」とSheet2のセルA1を参照しています。このとき、Sheet2の名前を変更した場合はセルB2の数式で指定しているワークシート名も自動的に調整されます。

ただし、参照しているワークシートを削除してしまうと「#REF!」エラーが発生します。

対処方法

「#REF!」エラーは、数式が参照しているセルやワークシートの削除が主な原因です。他のエラーのように、セルに数式を入力してEnterキーを押した瞬間に発生することは少ないです。セルやワークシートの削除は、一般的にユーザーが自ら行う操作です。つまり、エラーの原因を作り出したのはあなた自身です。うっかり列全体や行全体を削除したことで「#REF!」エラーが発生したのなら、[編集]メニューの[元に戻す]をクリックするなどして削除を元に戻しましょう。ただし、ワークシートの削除は[元に戻す]でも復元できないので注意が必要です。

数式で使用しているワークシートを削除したことで数式が「#REF!」エラーとなった場合、削除したシートと同じ名前のワークシートを挿入しても、「#REF!」エラーは自動的に解消されません。そのように、[元に戻す]などで操作を戻せない場合は、置換機能を使ってとりあえずエラーを解消することができます。