はじめに
単純なことですが、困っている人のお手伝いをしたのでその内容をまとめます。
症状
A列からC列に数値が入っていて、D列でA列からC列の合計値と一つ上のD列の値を合計したものを表示する表にて、以下のような式で計算していると途中の行を削除すると以降の計算結果が「#REF!」になってしまう。
[例] D10のセルの計算式
=SUM(A10:C10)+D9
ここで、9行目を削除すると以降の値が「#REF!」になってしまいます。
解決策
INDIRECT関数とADDRESS関数を併用して計算式を作成します。
- INDIRECT関数
INDIRECT("$A$1")というようにセルの座標を指定して値を取得できます - ADDRESS関数
ADDRESS(行番号,列番号)というように数値で行と列を指定すると座標を文字列で取得できます - ROW関数
ROW(座標)とすると座標の行番号が取得できる関数ですが、ROW()とすると関数を入力したセルの行番号を取得できます - COLUMN関数
COLUMN(座標)とすると座標の列番号が取得できる関数ですが、COLUMN()とすると関数を入力したセルの列番号を取得できます
[例] D10のセルの計算式
=SUM(A10:C10)+INDIRECT(ADDRESS(ROW()-1,COLUMN()))
これで行の削除も怖くない!
知っている人には当たり前なことですが、この一手間のために苦労している人が多いとのことだったので、どこかの誰かの一助になれば嬉しく思います。