Excelに慣れてきて、実現したいことを調べるとたまに登場するINDIRECT関数。
なんとなくコピペで使ってみたりしてるけど実際にどんな機能なのか分かっておらず応用ができていないという方もいるのではないでしょうか。
調べてみると、「指定される文字列への参照を返す 」のようなよく分からない説明でピン来ずにそのままになっている方もいるのではないでしょうか。
(参考:Microsoftサポート – INDIRECT関数)
そこで今回は、理解しにくいINDIRECT関数について、画像を交えながら超分かりやすく解説していきます!
INDIRECT関数とは
早速ExcelのINDIRECT関数とはどんな機能の関数であるかを解説していきます。
まずはマイクロソフト公式サポートに記載されている「指定される文字列への参照を返す 」をかみ砕いて言い換えると次のようになります。
「名前でセルや範囲を特定して、そのセルに含まれているデータを返す」
例えばセルやシート上のある範囲を箱のように考えると、箱に名前が書いてあって、その箱の中身を取り出すようなイメージですね。
セルを場所として直接(ダイレクトに)参照するのではなく、名前を呼んで間接的(インダイレクトに)参照するということですね。
INDIRECT関数のイメージができたところで、関数そのものの記述方法は以下の通りです。
INDIRECT(参照文字列, [参照形式])
「参照文字列」は上の例で言うところの箱の名前に当たります。
「参照形式」は、TRUEの時にセルを「A1」のような形式で指定するのに対して、FALSEの時に「R1C1」のように指定します。
参照形式は省略することができ、省略した場合は自動でTRUEになるため、こちらはほとんど指定されることはないので、あまり意識しなくて問題ありません。
とにかくINDIRECT関数の引数(かっこの中)は「名前」が入ることだけ覚えておきましょう!
INDIRECT関数の使い方
INDIRECT関数のイメージができたところで実際にINDIRECT関数の使い方を説明します。
簡単な使い方から初めて、どのように応用することができるのかも含めて順を追って解説していきます!
セルを参照する
まずは最も簡単な1つのセルを参照する方法をから紹介します。
例えばセルA1を参照するためには以下のように記述します。
=INDIRECT("A1")
ここで少し注意が必要なのは、あくまで文字列(名前)を元にして参照先を探すので、””(ダブルコーテーション)で参照先のセルの名称を囲う必要あります。
特に名前がついていないセルはそのままセルの位置である行と列が名前になるということですね。
ちなみにセルの範囲を記述することで以下のように範囲を参照することも可能です。
しかしここまでは普通に=(イコール)の後に参照先を記述する方法との違いがないので、さらに次からは応用的に使用方法を解説していきます。
別シートの値の参照
通常の参照でも別のシートを参照することは可能ですが、INDIRECT関数を使用することでメリットがありますので、説明します。
以下のように4つのシートがあり、「Sheet1」は「Sheet2~4」の各シートのあるセルから値を参照します。
「Sheet2~4」にはA列に以下のようにデータが含まれていることとします。
今回は「シート名」にSheet2~4のいずれかを「セル」にA2~5のいずれかを入力して値を参照します。
普通の参照を使うと以下のように単純に文字列として扱われてしまう為、参照する元を動的に変えることはできません。
一方でINDIRECT関数で記述をした場合は、別シートの値を動的に参照することができます。
=INDIRECT(A3&"!"&B3)
このように普通の参照方法ではダブルコーテーションで囲ってしまうとただの文字列として認識されてしまう参照をINDIRECT関数を使用すると文字列を参照先の名前として解釈するので動的な参照をすることができます。
セルや範囲に名前を付けて参照
上記までの例で、セルを「A1」のように指定する方法は参照先の情報が何なのか分かりにくくて使いにくいと感じた人もいるのではないでしょうか。
INDIRECT関数は名前を付けたセルや範囲を引数として指定することでそこに含まれる値を参照することができます。
そもそもセルや範囲に名前を付けるとはどういうことかを解説いたします。
例えば先ほどの「Sheet2」に入力されていたA2~6までの範囲を以下のように「名前ボックス」(赤枠)に「あ行」等任意の名前と入力することでセルや範囲に名前を付けることができます。
上のようにセルの範囲に名前を付けた状態で以下のようにINDIRECT関数に設定した名前を引数として設定をしてあげると、設定した名前を使って別シートの値を参照することができます!
例えば、他のシートも同様にSheet3は「か行」、Sheet4は「さ行」のように設定して上のA1セルをリスト選べるようにすると瞬時に参照先を切り替えることができて、何を参照しているかもひとめに分かりやすいですね。
また、このセルの範囲に名前を付ける方法とINDIRECT関数を組み合わせて別のリストで選んだ結果に連動して別のリストの内容を変える方法を以下で解説していますので、気になる方は見てみてください。
(参考:ドロップダウンリストを選択項目に連動して変化させる方法)
まとめ:INDIRECT関数を活用して参照をより柔軟に
今回は少し分かりにくいINDIRECT関数をイメージから基本的な使い方、応用まで丁寧に解説していきました。
名前を元に参照するイメージから応用的なセルの範囲に名前を付ける方法までかなり分かりやすかったのではなかったでしょうか。
このINDIRECT関数を使いこなせるようになるとExcel初心者から中級者にランクアップして、より高度なExcel活用ができるようになれますので、この際に覚えて活用してみましょう。
当ブログでは他にもExcelを使用した時短テクニックや便利機能を紹介していますので、興味がある方はぜひご覧ください!
(参考:Excel時短テクニック&便利機能まとめ)
コメント