INDIRECT(インダイレクト)関数は、指定される文字列への参照を返します。

この関数は理解するのに難しいのですが、引数内で文字列として「"A1"」と入力すると、セル参照として扱われます。また、「"シート1!A1"」と指定すれば、シート1のセルA1を参照してくれるわけです。

【構文】

=INDIRECT(参照文字列, [参照形式]) 

【使用例】

  • =INDIRECT("B2")
    セルB2をセル参照します。
  • =INDIRECT("シート1!B2")
    シート1のセルB2を参照します。この数式をオートフィルすると絶対参照のまま出力されます。
  • =INDIRECT("シート1!"&B2)
    シート1のセルB2を参照します。この数式をオートフィルすると相対参照で出力されます。

第2引数の参照形式は気にしなくて大丈夫です。省略するとTRUEとして扱われるのでA1形式で使われます。FALSEにするとR1C1形式、つまり列番号が1,2,3,4と表示されるタイプのやつね。A1形式とR1C1形式については、ワンポイントアドバイスに書いたよ!

関数説明

INDIRECT(インダイレクト)関数を覚えておくと、これどうするの!? ってワークシートに遭遇したとき、もしかしたら解決策の一歩になる、そんな関数です。

このように使うと、単純にセルB3を参照をするだけの関数なのですが……。

シートA、シートB、シートCの合計を集めたい場合を想定してください。

各シートにはそれぞれRAWデータが入っているとします。

それではINDIRECT関数を使って求めていきましょう。INDIRECT関数は[数式]タブ→関数ライブラリの[検索/行列]の中にあります。

数式はこのように入力します。ポイントは「&(アンパサンド)」を使うことです。

B3”!B:B”

赤文字は関数内でのセル参照で、ダブルクォーテーション内は文字列となります。&でつなげた結果、この場合だと

A!B:B

という結果になるわけです。もちろんこのままでは数式はエラーになります。

これにSUM関数を挟んであげましょう。

こうすることで、INDIRECT関数を無視すると

=SUM(A!B:B)

と同じ数式が出来上がります。

オートフィルすると…

シートBのB列の合計、シートCのB列の合計を出すことができました。各数式はこのようになります。

相対参照により、シート名はセル参照で取得し、INDIRECT関数でB列を参照させることができるわけです。

こちらは1シートに各シートの合計を集めるテクニックでしたが、INDIRECT関数を使うことで様々な関数と組み合わせることができ、いろいろな応用がききます。

ぜひ、↑の使用例はしっかりとマスターしてください。

さえちゃんのINDIRECT関数ワンポイントアドバイス

Microsoft社はもともとR1C1形式でExcelを使いたかったんだ。A1形式は戦争で使われていたから、あまりよくない! って考えていたんだけど、MS-DOSベースで動いていたIBM社のLotus 1-2-3で採用されていたA1形式のほうがみんな馴染みがあったから、Microsoft社はWindowsのExcelをみんなに使ってもらうべく(シェアを広げるべく)、A1形式を採用せざるを得なかったのね。

Excelのオプションから、R1C1形式に変更ができます。ここにチェックを入れると…。

列番号が番号になります。

ほとんどこの設定で操作をするということに遭遇したことはないですね。

ちなみに[参照形式]をFALSEにして使うと、R1C1形式でセルを参照することができます。

まあ、この使い方もほとんど遭遇したことがないので、第2引数を使う機会はあまりなさそうですね。

関数ステータス

関数ライブラリの種類

検索/行列

数式の構文

=INDIRECT(参照文字列, [参照形式]) 

引数ダイアログ

Microsoft 公式サポート

INDIRECT関数 - Office サポート