
Googleスプレッドシートで別のセルにあるシート名を参照したいときに便利なINDIRECT関数ですが、参照文字列の書き方や、特殊な条件によってエラーが発生します。この記事では、INDIRECT関数の正しい書き方と、エラーの解決策を解説しているので、ぜひ参考にしてみください。
INDIRECTの「書き方」のポイント

1. すべての参照は「文字列」で書く
INDIRECT関数が参照するのは文字列です。そのため、セル番地やシート名は二重引用符で囲んで文字列として完成させます。
- 良い例:
=INDIRECT("シート2!C2") - 悪い例:
=INDIRECT(シート2!C2)
2. セルと文字列を「&」で繋ぐ
シート名やセル番地を別のセルから参照する場合、&を使って文字列を結合します。このとき、シート名とセル参照の間には、必ず!を入れます。
良い例:=INDIRECT(A2&"!B2")
悪い例:=INDIRECT(A2"&B2")
INDIRECT関数の引数:(参照文字列, [参照形式])
さらに詳しい解説は、「INDIRECT関数の使い方」の記事をご覧ください。
REF!(パラメータ 1 の値が無効なセル / 範囲)の場合

原因1:
参照しているシートやセルが存在しない場合に発生します。
解決策:
- 参照先のシートやセルが削除されていないか、名前が変更されていないかを確認します。
- 参照先のシート名やセル番地に、全角・半角やスペルミスがないか確認します。
- シート名を参照している場合、シート名の後ろに
!を付け忘れていないか確認します。

原因2:
INDIRECT関数に渡された文字列が、有効なセル参照として認識されない場合に発生します。
これは、「数式」や「日付」として認識される可能性がある1-3や2025-4といったものを使用しているときに起こります。

解決策: 以下のいずれかの方法で、シート名を正しく認識させます。
- セルの書式を変更する
- 参照元のセルの書式を、「表示形式」→「数字」→「書式なしテキスト」に変更します。
- シート名を変更する
1-3のようなシート名を、1月-3月のように文字列を含む形式に変更します。
- 数式内で結合する
=INDIRECT("'"&A2&"'!B2")のように、シングルクォーテーションを結合して文字列として認識させます。
NAME?(不明な関数名)の場合

原因:
INDIRECTのスペルが間違っている(例:INDIREFT)場合に発生します。
解決策:
関数名を、正確にINDIRECTと入力し直す。