前回は「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つ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!エラーの原因と直し方



コメント