Excelで直前の行(列)までの合計値を行(列)の挿入を反映して計算する


上図のようなExcel表でE列の累計値を求める場合、通常は以下のように設定すると思う。

=SUM(E3:E5)

ところが、これだと途中に行を挿入された場合に
押し出された行(上の例だとE6)が計算に入らなくなってしまう。

そこで上図のように、累計用のセルに以下のような数式を指定する。

=SUM(E3:INDIRECT(ADDRESS(ROW()-1,COLUMN())))

これにより、以下のような流れで直前の行までの合計値が取得できる。

  1. まずROW関数とCOLUMN関数で、累計値を表示するセルの行と列をそれぞれ取得
  2. 直前の行を表すため、ROW()で取得した値を-1
  3. ADDRESS関数で、指定された座標の文字列に変換(この場合は"$E$5")
  4. INDIRECT関数で座標を表すように変換(E5への参照)
  5. SUM関数でE3から取得した座標までの範囲を合計

これで途中に行(列)が挿入されても、累計用セルの直前までで計算できるようになった。