- コストの累計値を集計するようなスプレッドシート(図1)。
- 残高(t)のセルは、ひとつ上の行にある残高(t-1)セル+ひとつ左の列にある増減(t)で定義されている
- ちょっとした誤記載などにより、ひとつ上の行を削除した
- すると、数式における残高(t-1)部分が壊れて、エラー表示(#REF!)になってしまう(図2)
図1 |
図2 |
いちいち行を削除するたびに、#REF!となったところ以下の数式をオートフィルにより修正すればいいのだが、それも面倒くさい。そんなとき、どうすればいいだろうか。
OFFSET関数
そんなときに使うのがOFFSET関数。
上の例で言うと、累計値を
累計値(t) = 累計値(t-1) + 費用(t)
と定義するのではなく、
累計値(t) =OFFSET(累計値(t), -1, 0) + 費用(t)
と定義してやればいい。
(なお、上のOFFSET関数の解釈は、「累計値(t)のセルを起点として、下に(-1)、右にゼロだけ移動したところにあるセルの値を参照せよ」というもの)
こうすると、仮に(t-1)の行を削除しても、参照の対象が、削除後における一つ上の行に自動的に変更されて、エラーになることを回避できる。