Excelで直前の行(列)までの合計値を行(列)の挿入を反映して計算する
上図のようなExcel表でE列の累計値を求める場合、通常は以下のように設定すると思う。
=SUM(E3:E5)
ところが、これだと途中に行を挿入された場合に
押し出された行(上の例だとE6)が計算に入らなくなってしまう。
そこで上図のように、累計用のセルに以下のような数式を指定する。
=SUM(E3:INDIRECT(ADDRESS(ROW()-1,COLUMN())))
これにより、以下のような流れで直前の行までの合計値が取得できる。
- まずROW関数とCOLUMN関数で、累計値を表示するセルの行と列をそれぞれ取得
- 直前の行を表すため、ROW()で取得した値を-1
- ADDRESS関数で、指定された座標の文字列に変換(この場合は"$E$5")
- INDIRECT関数で座標を表すように変換(E5への参照)
- SUM関数でE3から取得した座標までの範囲を合計