簡単・便利なのに意外と知られていないと思われる、ExcelのINDIRECT関数を紹介します。
※本投稿は、ベテラン向けではなく、INDIRECT関数を使ったことがない人、使った経験があまりない人向けの記事となります。

■引用:Microsoftのリファレンス

https://support.microsoft.com/ja-jp/office/indirect-関数-474b3a3a-8a26-4f44-b491-92b6306fa261

■目次

  1. INDIRECT関数の概要
  2. パラメータ
  3. 動作の説明
  4. 使用例
  5. まとめ

まずはINDIRECT関数について、公式の概要説明を読んでみます。

■INDIRECT関数の概要

Microsoftのリファレンスより抜粋

指定される文字列への参照を返します。 セル参照はすぐに計算され、結果としてセルの内容が表示されます。 INDIRECT 関数を使うと、数式自体を変更しないで、数式内で使用しているセル参照を変更することができます。

ここでは、「参照を返す」というところがポイントです。
参照文字列先の値には、セル番地だけでなく、名前など、配列を設定することもできます。
「参照を返す、とは?」という方もいるかと思いますが、習うより慣れろという言葉もありますし、後ほど具体例で確認します。

■パラメータ

関数の使い方(パラメータ仕様)は

書式  Microsoftのリファレンスより抜粋

INDIRECT(参照文字列, [参照形式])
INDIRECT 関数の書式には、次の引数があります。
参照文字列    必ず指定します。 A1 形式、R1C1 形式の参照、参照として定義されている名前が入力されているセルへの参照、または文字列としてのセルへの参照を指定します。 (中略)
参照形式    省略可能です。 参照文字列で指定されたセルに含まれるセル参照の種類を、論理値で指定します。
参照形式に TRUE を指定するか省略すると、参照文字列には A1 形式のセル参照が入力されていると見なされます。
参照形式に FALSE を指定すると、参照文字列には R1C1 形式のセル参照が入力されていると見なされます。

とあり、第2引数の参照形式は、ふつうA1形式をよく使うと思います。
その場合、引数は1つです。簡単です。

■動作の説明

さて、実際に動かしてみます。

単体の機能としては、

例1)セル番地を文字列で指定する

・表1の場合、INDIRECT(“A3”)と入力すると、120が返ってきます。

または、

例2)セル番地をそのまま指定する

・表2の場合、INDIRECT(B3)と入力すると、120が返ってきます。
・B3セルには「A3」が入力されていますが、この場合は「”A3”」という文字列が返るのではなく、A3セルの値が参照されます。

となります。
これだけ見ると、なにが便利かよくわからないです。
INDIRECT関数は、単独で使うシーンはあまりなく、実際はExcelの機能や関数との組み合わせで使うときに真価を発揮します。

実務で使ったケースを見ていきます。

■使用例

例1)Match関数と組み合わせる

・表3の場合、ID列の値で検索し、合致する金額列の値を取得できます。
・VLOOKUP関数は右側にある値しか抽出できませんが、抽出したい値が検索値よりも左側の列にある場合にはINDIRECT関数MATCH関数の組み合わせで取得することができます。
・検索対象の表の形式が変えられない場合時に使えます。

例2)入力規則と組み合わせる

・表4-1の場合、E2のデータの入力規則(リスト)に「=INDIRECT(D2)」を設定するとD2の値の名前で定義されている参照範囲が選択肢となります。
・表4-1の場合、「部署1」という名前でA2:A3が参照範囲に設定されています。
・「部署2」という名前でB2:B3を参照範囲に設定し、D2に「部署2」を入力すると、E2の選択肢が「鈴木、田中」に動的に切り替わります。(表4-2)

■まとめ

上記で紹介したのは一例でしたが、他にもVLOOKUP関数と組み合わせたり、セルの値によって参照するシート名を切り替えたり、と様々な使い方ができます。
自分の業務で使っている関数や機能と組み合わせ、INDIRECTを取り入れたら便利になるかどうか、振り返ってみてはいかがでしょうか。