Excelのシート
Excelでは1シート内にデータが収まりきらないことがあります。
その際によく用いられる手段が、複数のシートに分けて管理する方法。
シート切り替えで視覚的かつ直感的に情報を整理できます。
しかし、シートが大量にあるケースではかえって管理が難しくなることも。
例としてはシート名が「月曜」「火曜」…、あるいは「1日」「2日」…など、類似シートが数枚~数十枚と並ぶパターンです。
このパターンで情報を取り出す場合、INDIRECT関数を使ってシート名を指定することで管理が容易になります。
複数シートの値を参照する方法
複数枚のシートから値を取得する方法を紹介します。
データ例
以下のような曜日ごとの売り上げ集計ファイルを用意しました。
シートは合計6枚あり、「集計」および「月曜」「火曜」「水曜」「木曜」「金曜」それぞれに売上データが記載されています。
「月曜」から「金曜」までのシートには製品ごとの売上と合計金額が記載されています。
各シートの合計金額を「集計」シートに表示させることを目的とします。
失敗例
まずは失敗例です。
「集計」シートのB2セルに次のように記述しました。
=月曜!B5
一応これでも「月曜」シートの値は取得できます。
ただし、とても効率が悪いです。
すぐ下の項目の「火曜」以降でオートフィルが使えないという問題があります。
このままでは「火曜」以降すべての関数に対して手入力しなくてはいけません。
シート5枚程度ならまだ良いのですが、例えば30日分のシートの場合では大変な手間がかかります。
INDIRECT関数の使い方
オートフィルを使って値を取得するために便利なのがINDIRECT関数です。
INDIRECT関数は引数に文字列を指定して参照を返すことができます。
今回の例では次のように指定しました。
=INDIRECT(A2&"!B5")
INDIRECTの引数に入力した「A2&”!B5″」の意味を解説します。
最初の「A2」は「月曜」という文字列が入ったセルです。
「&」は文字列を繋ぐ記号です。
シート名を意味する「!(エクスクラメーションマーク)」、および参照先セルの「B5」を文字列を表す「””(ダブルクォーテーション)」で囲っています。
以上を組み合わせた結果が「A2&”!B5″」です。
「月曜」を直接入力でなくセル参照としたことで、火曜以降の値をオートフィルで表示できるようになりました。
シート数が多くなればなるほどINDIRECT関数を使った上記の手法は効果を発揮します。
関数を活用して面倒な手入力はできる限り省きたいものです。
まとめ
INDIRECT関数を使ってシート名を参照する方法を紹介しました。
- 膨大な量のシートを使う際はシート名の直接入力は避ける
- INDIRECTは指定した文字列で参照を返す関数
- シート名をINDIRECT関数の引数に使うことで別シートの値を取得可能
当サイトでは各種PCスキルを公開しています。