前回は「0で割ったときに出る #DIV/0! エラー」について解説しました。今回のテーマは#REF!エラーです。
#REF!は、ひとことで言えば「参照先が見つからない」というエラーです。式が参照していたセル・行・列・シートが、何らかの理由で消えてしまったときに表示されます。「シートを整理しようと行を削除しただけなのに、気づいたらセルがエラーだらけになっていた」——そんな経験をした方もいるのではないでしょうか。原因さえわかれば、修正はそれほど難しくありません。順を追って見ていきましょう。
#REF!エラーが出る仕組み
スプレッドシートの式は、「あのセルの値を使う」という参照(リファレンス)の仕組みで成り立っています。その参照先が消えてしまうと、式は何を参照すればよいかわからなくなり、#REF!(Reference=参照のエラー)を返すのです。
| 操作 | 起きること | 具体例 |
|---|---|---|
| 行を削除した | 削除した行を参照していた式が#REF!になる | フォーム(野手)の特定行を削除 → 試合当日(野手)シートの対応行が#REF!に |
| 列を削除した | 削除した列を参照していた式が#REF!になる | 設定一覧シートの列を削除 → 年間(野手)のA列・B列が#REF!に |
| シートを削除・改名した | そのシートを参照していた式がすべて#REF!になる | 「フォーム(野手)」シートを誤って削除 → 試合当日(野手)の全列が#REF!に |
この成績管理表の参照構造を理解する
#REF!エラーがどこまで影響するのかを正しく把握するために、まずは成績管理表全体の「参照の流れ」を確認しておきましょう。
| 参照元(値を使うシート) | → | 参照先(データが入っているシート) |
|---|---|---|
| 試合当日(野手) | → | フォーム(野手)・設定一覧 |
| 試合当日(投手) | → | フォーム(投手) |
| 年間(野手) | → | 試合当日(野手)・設定一覧 |
| 年間(投手) | → | 試合当日(投手)・設定一覧 |
| チーム | → | 試合当日(野手)・試合当日(投手)・フォーム(チーム成績) |
この構造を見るとわかるように、特に危険なのは「フォームシート」と「設定一覧」の削除・改名です。この2つは最も多くのシートから参照されているため、少し手を加えるだけで連鎖的に広い範囲へ#REF!が広がってしまいます。
たとえば、この管理表の数式を見てみると、試合当日(野手)シートのA列は ='フォーム(野手)'!B2 のように直接シート名を指定して参照しています。年間(野手)シートのA列・B列も ='設定一覧'!A3 という形で、選手名と背番号を引っ張ってきています。
シート名を「フォーム(野手)」から別の名前に変えるだけで、このシートを参照しているすべてのセルが一斉に#REF!になってしまいます。フォームシートと設定一覧のシート名は絶対に変えないこと——これが大原則です。
#REF!エラーが出たときの確認手順
「気づいたらエラーが出ていた」というときは、次の手順で原因を特定していきましょう。
#REF!が出ているセルをクリックすると、数式バーに現在の式が表示されます。式の中に #REF! という文字が含まれていれば、その部分の参照先が消えているということです。たとえば ='フォーム(野手)'!#REF! のように表示されます。
「行を削除した」「列を削除した」「シート名を変えた」「シートを削除した」——#REF!の原因は、ほぼこのどれかです。直前の操作を振り返るのが、原因究明の一番の近道になります。
#REF!に気づいた直後であれば、Ctrl+Z(Macの場合はCommand+Z)で直前の操作を取り消すのが最も確実です。削除した行・列・シートが復元され、エラーも消えます。エラーに気づいたら、まず元に戻すを試してみてください。
時間が経ってしまいCtrl+Zが使えない場合は、エラーが出ているセルの式を正しい参照先へ書き直します。次のパターン別の修正例を参考にしてください。
パターン別の修正例
パターン①:シート名を変えてしまった
たとえば「フォーム(野手)」を「野手フォーム」に改名してしまった場合、試合当日(野手)シートのA列は ='フォーム(野手)'!B2 を参照しているため、全行が#REF!になってしまいます。
最もシンプルな解決策は、シート名を元の名前(「フォーム(野手)」)に戻すことです。式を1つずつ直すよりもはるかに早く、全セルが一気に復元されます。
シート名を変えるには、シートタブを右クリックして「名前を変更」を選びます。括弧や(野手)の表記も含めて、元の名前と完全に一致させてください。
パターン②:行を誤って削除してしまった
たとえばフォーム(野手)シートの特定の行(選手のデータ行)を削除してしまうと、その行を参照していた試合当日(野手)シートの行が#REF!になります。
まずはCtrl+Zが使える間に戻すのが一番です。使えない場合は、削除した行の内容をフォームシートに手動で再入力して行を復元します。
フォーム(野手)シートはGoogleフォームの回答が自動で記録されるシートです。削除した行のデータがフォームの回答履歴に残っていれば、Googleフォームの管理画面で回答を確認し、手動で再入力することもできます。
パターン③:設定一覧シートの列を削除してしまった
年間(野手)シートのA列は ='設定一覧'!A3(背番号)、B列は ='設定一覧'!B3(選手名)を参照しています。設定一覧シートのこれらの列を削除すると、年間シートの選手名・背番号がすべて#REF!になってしまいます。
- 設定一覧シートに、削除してしまった列(背番号列・選手名列)のデータを再入力する
- 年間(野手)シートのA2セルの式
='設定一覧'!A3が、正しい列を参照しているか確認する - 列の位置がずれている場合は、参照列番号を修正する(例:A列が削除されてB列がA列に繰り上がったなら、
='設定一覧'!A3のままで正しい)
#REF!エラーを出さないための予防策
修正方法を覚えることも大切ですが、それ以上に大事なのは「そもそも出さない」ための習慣です。
- フォームシート(フォーム(野手)・フォーム(投手)・フォーム(チーム成績))——Googleフォームが自動記録するシート。行の削除・列の追加・シート名の変更はすべてNGです
- 設定一覧シート——選手名・背番号を管理するマスタです。列の削除・順序変更はNGです
- 試合当日・年間・チームシートの列——他のシートから参照されている可能性があります。削除する前に、必ず参照元を確認してください
「この列は見なくていいから消したい」と思ったときは、削除ではなく非表示にするクセをつけておくと、#REF!エラーを大幅に防げます。非表示にした列はデータも数式もそのまま残るので、他のシートからの参照が壊れることはありません。
第84回で投手シートの列を非表示にしたときと同じ方法です。「整理したい」と思ったときほど、削除より先に非表示を検討する——これが#REF!エラー予防の鉄則です。
#REF!とシート名の変更:特に注意が必要なケース
最後に、特に起きやすい「シート名変更による#REF!」について補足しておきます。この成績管理表のシート名には括弧つきの日本語が使われており、ちょっとした入力ミスで参照が切れてしまいやすいので注意が必要です。
| 正しいシート名 | 間違いやすい例 | 結果 |
|---|---|---|
フォーム(野手) |
フォーム(野手)(全角括弧) |
全列が#REF!に |
試合当日(野手) |
試合当日(野手)(全角括弧) |
年間(野手)の参照が#REF!に |
フォーム(チーム成績) |
フォーム(チーム成績)(半角括弧) |
チームシートの集計が#REF!に |
半角括弧「( )」と全角括弧「( )」は、スプレッドシート上では別の文字として扱われます。シート名を確認・修正するときは、括弧の種類(半角か全角か)にも気を配ってください。
- #REF!は「参照先が消えたとき」に出るエラー——行・列・シートの削除、シート名の変更が主な原因
- この成績管理表はフォームシート → 試合当日シート → 年間シート → チームシートという参照チェーンで成り立っている——上流が壊れると下流がすべて#REF!になる
- 気づいた直後はCtrl+Z(元に戻す)が最速の修正方法
- 時間が経ってしまった場合はシート名を元に戻す・削除したデータを再入力する・式の参照先を修正するの順で対処する
- 予防には「削除より非表示」の習慣が有効——非表示なら参照は壊れない
- シート名の半角・全角の括弧の違いにも要注意——「(野手)」と「(野手)」は別のシート名として扱われる
次回予告
次回は「#VALUE!エラーの原因と直し方」を取り上げます。#VALUE!は「計算に使えない値が混ざっているとき」に出るエラーで、文字列と数値が混在していたり、投球回の小数表記のはずが文字列として入力されてしまっていたりすると発生します。成績管理表で起きやすい具体的なパターンと、その修正方法を詳しく解説していきます。
▶︎ 次回:【第87回】#VALUE!エラーの原因と直し方



コメント