表で累積を表示したい

職場で、「Excelの表で累積を表示したい」という相談を受けた。
さて、どうしたものか。
f:id:Infoment:20210107224453p:plain

今回は、以下二つの制約があった。

  1. 表は、2行がセル結合で1レコードになっている。
  2. 途中のレコードを削除する場合がある。

例えば、こんな感じだ。
f:id:Infoment:20210107224749p:plain

良し悪しはさておき、セルが結合されているため、テーブルとして
書式設定することはできない。マクロ使用はNGではないとのこと
だったが、であれば、なるべく避けた方が良かろう。

例えば、一つ上と左隣を足していく、という方法がある。
f:id:Infoment:20210107225049p:plain

1レコード目のさらに一つ上はラベル行であるため、足し算すると
エラーになる。従って、エラー回避としてIFERRORを使用している。

しかしこれだと、途中の行を削除した際、参照先が失われて空振り
が発生する。
f:id:Infoment:20210107225312p:plain

さて、どうしたものか。あーでもない、こーでもないと議論・検討を
重ねた結果、今回はこれに落ち着いた。

  1. Row関数-2で、自身の二行上の行番号を得る。
  2. Column関数で、自身の列番号を得る。
  3. 1と2からAddress関数で、自身の二行上のアドレスを得る。
  4. 3とIndirect関数で、自身の二行上の値を得る。
  5. 4と左隣を足し算する。

f:id:Infoment:20210107230139p:plain

この場合、自分自身を基準にして加算対象セルを指定しているため、途中の
レコードを行ごと削除しても、先程のような空振りは発生しない。

他にSumif関数を使用する案などもあったが、取り敢えずこれに落ち着いた。
でもきっと、もっといい方法があるに違いない。
参考まで。