前のシートを参照して累計を出す ~ INDIRECT関数

前回のブログで、マクロを使い1か月分のシートを作成する方法を紹介しました。

日ごとのシートには、その日の売上だけでなく、月累計額欄が設けられていることもあります。
前のシートの累計額に、その日の売上を足すには、シート参照よりもINDIRECT関数を使うと便利です。
他のシートへコピーすることができ、汎用性が高くなります。

前のシートを参照するには

前回紹介した1か月分のシートに「月累計」を加えてみました。
月初となる1日は、その日の売上が月累計額となります。

翌2日の月累計額は、1日の月累計額に2日の売上高を足せば計算できます。
よく使われるのは、シート参照です。
シート名をシングルクォーテーションで囲み、!マークを付ける方法です。
参照したいセルを左クリックしても式入力欄に反映されます。

シート参照は入力が簡単ですが、応用がききません。
10月3日以降も2日と同様に式を入力する必要があります。
月累計を計算するには、毎日、前の日を参照する式を入力することになります。

INDIRECT関数で参照

シート参照をもっとフレキシブルに行うには、INDIRECT関数を使います。
INDIRECT関数で算式を作成すれば、他のシートにコピーすることができます。
あるいは、前回紹介した原稿となるシートに算式を入力しておけば、マクロ実行時にすべてのシートに複写されます。

INDIRECT関数は、基本的に文字と関数の組み合わせとなります。
先ほどの10月2日の月累計の算式は、次のように書くことができます。

黄色い下線部分がINDIRECT関数です。
これに2日の売上を足して(赤い下線部分)を累計を計算しています。

INDIRECT関数の一般的な内容は、解説本やサイトにありますが、この式の意味としては、

  • 「’ ’」(シングルクォーテーション)で大きく囲み、末尾に「!」を付けてシート参照とする
  • 前日のシート名が「1001」なので、D1セルの日付から1をマイナスし、月と日を抽出する
  • TEXT関数で、MMDD形式に整える

というものです。さらに下の行にコピーをすることを考え、

  • D1セルは絶対参照
  • ROW関数を使い、行番号を取得

としています。

本日のまとめ

INDIRECT関数は、若干書き方に戸惑うところもありますが、決して難しいものではありません。
一度、原稿とするシートに関数を書いておけば、マクロ実行時に1か月分のシートすべてに反映されます。(原稿とするシートに式を入力すると参照エラー(#REF)となりますが、複写すれば問題ありません。)

毎日前日、シートをクリックして算式を入力しているのであれば、INDIRECT関数で大幅な省力化ができるはずです。