
GoogleスプレッドシートのINDIRECT関数は、複数のシートにまたがるデータの集計や、連動するプルダウンの作成に便利です。この記事では、INDIRECT関数の基本的な使い方から具体的な活用方法まで、初心者にもわかりやすく解説しているので、ぜひ参考にしてみてください。
INDIRECT関数とは

INDIRECT関数は、「文字列」を「実際のセル参照」に変えることができる関数で、別シートの参照や複雑なデータ抽出に役立ちます。
たとえば、C2セルに「A4」という文字列が入っている場合、 D2セルに=INDIRECT(C2)と入力すると、"A4"という文字列を実際のA4セルとして「みかん」を返します。
もし、D2セルに=C2と入力すると、そのまま「A4」という文字列を返します。
INDIRECT関数の基本的な使い方

INDIRECT関数は、文字列で指定したセル参照を、実際の参照先として値を返します。
たとえば、C列にある数字を行番号として、A列から値を抽出したい場合、数式は次のようになります。
例:=INDIRECT("A"&C2)
数式の解説
A"とC2セルの値(例:3)を&で結合することで、"A3"という参照文字列が作成されます。- INDIRECT関数は、この文字列を実際のセル番地として認識し、
A3セルに入っている「ばなな」を返します。
ポイント
- 文字列を直接指定する場合は、
"A"のように二重引用符が必要です。
INDIRECT関数の引数:(セル参照の文字列, [A1 形式にする])
第2引数「参照形式」とは?
参照文字列の形式をA1形式にするか、R1C1形式にするかを、TRUEまたはFALSEで指定します。R1C1形式はほとんど使わないため、基本的に省略して問題ありません。
TRUEまたは省略- 参照文字列は、A1形式(例:
A1)であると見なされます。A1形式は、列をアルファベット、行を数字で指定する、最も一般的なセル表現形式です。
- 参照文字列は、A1形式(例:
FALSE- 参照文字列は、R1C1形式(例:
R1C1)であると見なされます。R1C1形式は、行(Row)と列(Column)を両方数字で指定する表現形式です。
- 参照文字列は、R1C1形式(例:
INDIRECT関数の活用例
別シートを参照する

INDIRECT関数の最も基本的な活用例が、別シートの参照です。この方法を使えば、オートフィルで複数のシートから簡単にデータを取得できます。
たとえば、A列にあるそれぞれのシート名に対応するC2セルのデータを取得したい場合、数式は次のようになります。
例:=INDIRECT(A2&"!C2")
数式の解説
A2と"!C2"を&で結合することで、"4月!C2"という参照文字列が作成されます。- INDIRECT関数は、この文字列を実際のセル番地として認識し、
4月シートのC2セルに入っている「150」を返します。
ポイント
- シート名は完全に一致させないとエラーになるため、全角・半角の違いに注意して入力します。
連動する2段階プルダウンを作成する

INDIRECT関数を活用すると、1つ目のプルダウンで選択した項目に応じて、2つ目以降の選択肢が絞り込まれるプルダウンを作成できます。
この方法では、2つ目のプルダウンのリスト範囲を「名前付き範囲」として設定し、INDIRECT関数を使ってその範囲を呼び出します。
詳しい解説は、「連動する2段階プルダウンの作り方」をご参照ください。
動的な範囲を集計する

INDIRECT関数は、SUM関数などの集計関数と組み合わせて使うことで、データの最終行を自動的に含めた集計ができます。
- 手順1:
D2セルに、データの最終行の番号を取得する数式を入力します。- 例:
=ArrayFormula(MAX((B:B<>"")*ROW(B:B)))
- 例:
- 手順2:INDIRECT関数とSUM関数を組み合わせて、動的な範囲を指定します。
- 例:
=SUM(B2:INDIRECT("B"&D2))
- 例:
この数式は、「B2」から「B列の最終行」までを自動的に集計範囲とします。