前月の売上シートを参照して売上の累計を求めるスゴ技
ここでは、売上集計表を月別のシートに作成して、売上合計の累計を表示します。
基本的には、前月シートのセルを参照すればいいのですが、シートを参照するには必ずシート名を指定しなくてはならず、「前シート」のような相対的な指定はできません。そのため、各月ごとに数式を入力しなければならないのです。
ところがこのスゴ技を使えば、「前シート」というように相対的なシート参照ができるのです。
ここでは、「GET.WORKBOOK」と「GET.DOCUMENT」というマクロ関数を利用します。
これらは本来、マクロシートでしか使えない関数ですが、「名前」に定義すれば、ワークシートでも利用できます。
「名前の定義」で式を設定する手順
メニューバーから[挿入]→[名前]→[定義]を選びます。
(1)「名前」欄に「シート名一覧」と入力します。
(2)「参照範囲」欄に「=GET.WORKBOOK(1)&T(NOW())」と入力(すべて半角で)。これはブック内のシート名一覧を取得するマクロ関数です。
(3)[追加]ボタンをクリック。名前の一覧に「シート名一覧」が追加されました。
(4)「シート番号」と入力します。
(5)「=GET.DOCUMENT(87)&T(NOW())」と入力(すべて半角で)。これは表示中のシートがそのブックのなかで何枚目にあるかを求めるマクロ関数です。
(6)、(7) をクリックして完了です。
累計の式を入力する手順
(1)「1月」シートを表示します。
1月は先頭シートで前のシートがないので、(2) 7行目には前年度の販売累計の数値と今月の「合計」(6行目)を足す式を入力してあります。
(3)「2月」のシート見出しをクリックしたあと、(4)[Shift]キーを押しながら「6月」のシート見出しをクリックします。
(5) 累計を表示したい範囲(C7:E7)を選択します。
キーボードから(6)「=INDIRECT(INDEX(シート名一覧,シート番号-1)&”!”&CELL(”ADDRESS”,C7))+C6」と入力(すべて半角で)して、[Ctrl]+[Enter]キーで確定します。選択範囲に式が入ります。
「1月」のシート見出しをクリックして複数シートの選択を解除すれば完了です。
C7セルに入った式は?
「シート名一覧」にはブック内のシート名の一覧が、「シート番号」には数式を入力したシート番号が取得できます。これらを使いINDEX関数で前シートのシート名を取得します。
あとはCELL関数でセル番地を生成して、前シートの累計セルを参照すればOKです。
- 関数名
- 検索/行列関数
- 書式
- =INDIRECT(参照文字列[,参照形式])
- 関数名
- 検索/行列関数
- 書式
- =INDEX(範囲,行番号,列番号[,領域番号])
知ッ得 5――
シート名一覧を取り出す関数の便利な使い方とは?
「GET.WORKBOOK(1)」とすると、シート名の一覧を配列として取得できます。
INDEX関数で「シート名一覧」から、番号を指定することで各シート名を取り出せます。
なお、「&T(NOW())」としているのは、自動的に再計算するための工夫です。
(次ページ、「マウスクリックで今日の日付に飛ぶ「週間スケジュール帳」を作る」に続く)
この連載の記事
-
第3回
ビジネス
仕事に便利! 複数シートの効果的な使い方――応用編 -
第2回
ビジネス
もっと効率化! Excel「複数シート」を仕事に活用 -
第1回
ビジネス
仕事を加速する! Excel「複数シート」活用の奥義 - この連載の一覧へ