この記事では、ExcelのINDIRECT関数について解説します。INDIRECT関数とは、セルやシートの名前を使って文字列で参照先を指定できる関数です。あまり聞きなじみのない方も多いと思います。実際、使われる機会はそれほど多くはないかもしれません。ですが、覚えておくことでExcelを使った業務のレベルを格段に向上させることができます。
基本的なINDIRECT関数の使い方
まず、基本的なINDIRECT関数の使い方を紹介します。前述の通り、この関数ではセルやシートの名前を使って文字列で参照先を指定できる関数です。
INDIRECT関数 |
---|
指定した文字列をセル参照として解釈し、そのセル参照の値を返す。 |
- セルの名前:標準では、A1、B2といったセル番地
- シートの名前:シート名に記載されている名前
セルの名前を使う
たとえば、INDIRECT関数でセルB6のデータを参照するには、INDIRECT関数を挿入し、引数にはダブルクォーテーションで囲んで”B6”と記載します。
=INDIRECT(“B6”)

これでセルB6のデータを表示させることができます。

これがセルの名前を使って参照先を指定するということです。セルの名前は他のセルに記載したものを参照する形でも大丈夫です。たとえば、セルA9に「B6」と記載しておき、INDIRECT関数でセルA9を参照します。
=INDIRECT(A9)

これで同じようにセルB6のデータを表示させることができます。

ただ、セル番地はアルファベットと数字でわかりづらいです。実はセルにもシートと同じように名前を付けることができます。
たとえば、セルB6に「人口」という名前を付けてみます。セルB6にカーソルを合わせると左上にB6と書かれています。

ここをクリックし、「B6」を削除します。そして、「人口」と入力します。

これでセルに名前を付けることができました。
今度はこの名前を用いてINDIRECT関数で参照を行ってみます。INDIRECT関数を挿入し、引数にダブルクォーテーションで囲んで「人口」と入力します。

これで、該当のデータを表示させることができます。

先ほどと同じようにセル参照でも同じようにデータを表示させることができます。


シートの名前を使う
INDIRECT関数ではシート名も文字列を使って指定することができます。たとえば、日本とアメリカのデータが各シートにまとめられています。

これらのシートから人口のデータをまとめのシートに抽出したいと思います。

まず、先ほどと同じように各シートの人口のデータに「人口」という名前を付けます。この際、同じブック内では同じ名前を付けることができないので、名前の適用範囲を各シート内にする必要があります。手順としては、数式タブから「名前の定義」をクリックします。

名前に「人口」と付け、範囲には「アメリカ」シートを指定します。参照範囲には「アメリカ」シートのセルB6を参照していることを確認します。

これで「OK」を押せば、「アメリカ」シート内の「人口」というセルを定義することができます。

同じように「日本」シート内の「人口」というセルを定義します。

これでシート名とセル名を定義することができました。
「まとめ」シートでINDIRECT関数を挿入し、以下のように数式を入力します。
=INDIRECT(A2&”!”&B2)

参照しているセルA2はシート名「日本」を表します。&で接続し、ダブルクォーテーションで囲んで「!」を入力します。「!」はシートとセルの区切り文字を意味します。最後に&で接続し、「人口」と書かれたセルB2を参照します。これで、「日本」シートの「人口」のセルを参照する、ということを意味します。確定すれば、該当のデータが表示されます。

下に数式をコピーすれば、アメリカの人口も表示されます。

このようにINDIRECT関数では、シートやセルなどの参照先を文字列を使って指定することができます。以降では実際の活用例を3つ紹介したいと思います。
コメント