Excelでセルに入力されたシート名を参照する(INDIRECT関数)

Excelでデータの集計を行うときに、シート名をセルから参照したい場合もあります。たとえば、支店ごとに作成した売上を合計する場合です。

東京、千葉、神奈川という支店について1支店1シートで売上を入力しておきます。

1支店1シートで売上を入力
1支店1シートで売上を入力

各支店の売上を「売上合計」シートで集計します。

各支店の売上の合計
各支店の売上の合計

このとき、「東京支店の売上」は、どのように取得すれば良いでしょうか。

簡単に考えれば「東京シートのセルB14」ということで「=東京!B14」と入力する方法があります。

支店の売上を取得する原始的な方法
支店の売上を取得する原始的な方法

ただし、この方法ではA列の支店名(シート名)が変更されたときにB列の式も修正する必要があるので面倒です。それなら、A列に入力された支店名に該当するシートを参照できれば便利ですが、セルA2のシートのセルB14という意味で「=A2!B14」と入力してもうまく参照できません。

その場合、INDIRECT関数が役立ちます。この関数はセルに入力された文字列を参照に変えてくれる関数です。セルに入力された内容からシートやセル範囲を参照できるようになります。

たとえば、「=INDIRECT(A2&"!B14")」と入力すれば「A2に入力されたシート名のセルB14」を参照できるようになります。それにより、東京シートのセルB14に入力された売上を取得することができます。A列の支店名が変更された場合も、参照するシートを変更するためB列の式を修正する必要はありません。

他のセルも同じように入力(オートフィルでも)すれば、セルに入力された支店名からシート名を参照できます。

セルに入力されたシート名を参照する
セルに入力されたシート名を参照する

Excel tips