ラベルラベル

検索・参照中級

INDIRECT関数を見て理解する

文字列をセルや範囲への参照として解釈し、指定した位置の値を取得する関数です。

3つのポイント

  1. 文字列をセル参照に変換する
  2. A1形式・R1C1形式を切り替える
  3. 参照先の値を別シートからも取得する
例題

文字列から別シートの範囲を参照する

サンプル数式

  • 参照先を表す文字列
  • A1形式かどうか

いまの結果:

2行 × 2列
計算結果
結果セル:D2スピル範囲:D2:E3

先頭行:11 | 101

入力・条件:参照先を表す文字列 「DATA!A2:B3」 / A1形式かどうか TRUE
  • 参照先を表す文字列A2:「DATA!A2:B3」
  • A1形式かどうかB2:TRUE
この結果になる理由

DATA!A2:B3から2行×2列の参照を解決し、D2を起点にスピル表示します。

例を試す

サンプルデータ

参照先を変えてみよう

※ Excel と Google スプレッドシートで結果や挙動が異なる場合、Excel の仕様を基準にしています。

「文字列から別シートの範囲を参照する」のサンプルデータ。引数番号は正式引数と教材要素の対応、小さな角丸数字は処理順を表します。
ABCDE
1参照文字列参照形式 結果 
2 11101
3   22202
参照先を表す文字列A1形式かどうか結果セル
①・② 正式引数 / 教材要素1–3 処理の流れ

A2、B2に値を入力すると、結果と処理順が変わります。

サンプルデータ(シート名:DATA)

「文字列から別シートの範囲を参照する」のサンプルデータ。強調されたセルは参照先から返す値を表します。
AB
1商品数量
211101
322202
433303

2つの引数

色付きの丸数字は、サンプル数式と引数ガイドで同じ引数を示しています。表にも同じ番号があれば、その引数で指定しているセルを示します。

  1. A2表のセル: sample A2

    この文字列からセル番地・範囲・シート名・名前付き範囲を解決します。

  2. B2表のセル: sample B2

    TRUEはA1形式、FALSEはR1C1形式です。省略するとTRUEになります。

この数式を日本語にすると

初期状態はA1形式でDATA!A2:B3を参照し、D2:E3に2行×2列で表示します。「例を試す」でR1C1形式にも切り替えられます。A2・B2への直接入力もできます。

この説明は、最初に表示されているサンプルデータをもとにしています。入力値を変更しても説明文は変わりません。

処理の流れ

手順1〜3を順番に確認しましょう。表内の小さな角丸数字は、対応する手順を示します。

  1. 参照文字列を確認する

    参照文字列の指定はDATA!A2:B3です。

  2. 参照形式を確認する

    参照形式の指定はtrueです。A1形式で解釈します。

  3. 参照先と結果を確認する

    D2

    DATA!A2:B3から2行×2列の参照を解決し、D2を起点にスピル表示します。

対応アプリ

  • Excel
  • Google スプレッドシート

関数自体が対応するアプリです。教材例の数式や再計算が、両アプリで同じように動くことを保証するものではありません。

この例の注意点

  • INDIRECTは文字列をセル・範囲への参照として解釈します。ADDRESSは参照文字列を組み立てる関数で、役割が異なります。
  • 第2引数a1を省略するとTRUEとなり、A1形式で解釈します。FALSEならR1C1形式です。
  • R1C1形式のR2C1:R3C2は、2行1列目から3行2列目(A2:B3)を表します。第2引数をFALSEにすると、この形式で参照できます。
  • 第2引数を省略する式は=INDIRECT(A2)です。この教材のB2はセル参照なので、B2を空白にする操作は引数の省略とは異なり、Excel 2021ではFALSEとしてR1C1形式になります。
  • 存在しないシート名・名前付き範囲や無効な番地(例:DATA!A0)は#REF!になります。第2引数にabcなど論理値へ変換できない値を入れると#VALUE!になり、引数セルの実エラーは伝播します。
  • Excel 2021を優先しています。Sheetsとはエラー・空白値・スピルの表示に差があり、Managerの747件の実測証跡に記録されています。
  • この例題では、別シートのセル・範囲参照を扱います。外部ブック、複雑な循環参照、他関数との入れ子を含む汎用式評価は対象外です。

一般構文

対応:Excel / Google スプレッドシート ・ 構文:引数名に差あり

  • Excel 2021では空白参照が0表示になる一方、Sheetsでは空欄表示になる実測例があります。
  • 一部の空白・参照文字列や上流のエラー値で、Excel 2021とSheetsのエラー結果が異なります。
  • スピル妨害時はExcel 2021で#スピル!、Sheetsでは#REF!が観測されました。

Excel

=INDIRECT(ref_text, [a1])

[] は省略できる引数です。

省略時

a1
→ TRUE省略時はA1形式です。明示的に空の引数位置を置く場合とは異なります。

Google スプレッドシート

=INDIRECT(cell_reference_as_string, [is_A1_notation])

[] は省略できる引数です。

省略時

is_A1_notation
→ TRUE省略時はA1形式です。明示的に空の引数位置を置く場合とは異なります。
公式資料・確認範囲

公式資料

実機確認

  • Excel 2021 / Google スプレッドシート省略時の扱い・計算結果・入力の扱い・エラー・配列展開を確認済み

この教材で扱わない範囲

  • この教材の操作は2つの固定シート(入力側とDATA)のセル・範囲参照およびA1/R1C1の切り替えを対象とします。名前付き範囲の評価器は内部にありますが、定義の表示を伴う教材プリセットは公開していません。
  • 外部ブックの参照、複雑な循環参照、他関数との入れ子を含む汎用式評価、未観測の型変換の完全再現は対象外です。

次に学ぶ関数

ROWS

INDIRECTで参照先の範囲を切り替えたら、ROWSで範囲の行数を数える方法を学びます。

次に学ぶ