5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Excelで自分の1つ上のセルまでの合計を計算したいときの式の書き方

Last updated at Posted at 2021-07-11

SUMの:の右側にOFFSET関数を入れる書き方は、もう少し評価されてもいいと思うのだけど。あまりにも存在感がない。

A1からA10までのセルの合計をA11に計算する

普通に書くと、A11にこの式を書きます
SUM(A1:A10)

この式の問題点

ある一か所以外に行を挿入した場合は、SUMの参照範囲が自動的にA1:A11に変更されます。Excel賢い。
ある一か所が問題です。合計のセル(A11)の直前に行を足した場合はSUMの参照範囲がA1:A10のままになります。合計セルの一つ上に行を足したいことが多いんですよね、意外と。

この結果、式の範囲ずれが発生します。

これを避けるために、

  • 行を挿入したあとに式の範囲を手動で直す
  • この現象を先読みしてあえてA9に行を差し込み値をずらす

など人間側がExcelに踊らされることになります。
それか、参照がミスっていることに気が付かず、計算機を使っているのに計算ミスをするというもっと悲しいことが起きます。

解決方法

=SUM(A1:OFFSET(A11,-1,0)) と書く

A1セルに始まり、A11の一つ上のセルまでの合計という意味です。
実は、SUM関数などのセル範囲指定をするときの前後は、文字列で直接セルの番地を書くことが多いですが、セル参照が返ってくる関数であれば書くことができます。

この書き方の場合、A10に行を追加しても、OFFSET関数の第一引数も自動的にA12に繰り下げられえるので、A12の1つ上まで(つまりA11まで)となり合計が正しく計算できます。

副作用

副作用もあります。F2キーを押して編集状態にしたときにSUMの合計範囲に色を付けて教えてくれなくなります。これはちょっと悲しい。

offset関数について

第一引数のセル番地からの位置を相対的に選択する関数。

offset関数の定義
offset(範囲, 行数, 列数, [高さ], [幅])

サンプルで使ったOFFSET(A11,-1,0)の説明

  • A11,
  • -1(縦位置マイナス1、上方向に1つ動く、つまり10),
  • 0(横位置は変更なし、つまりAのまま)
  • 省略(1行分)
  • 省略(1列分)

これでA10を指します。

第4引数をうまく使うとA11を起点として、上10個を参照する範囲を取得するOFFSET関数を書くこともできますが、やめておきます。

まとめ

SUM関数の引数のコロンの右側(左側も)に、関数を指定できるという事実があまり知られてなさそうだったので記事にしてみました。最初にSUMを使うときにA1:A10の形式で勉強するから、この形しか使えないと思い込んでしまっているかもしれません。

月の日数によって合計範囲が変わるような表を使っている場合は、毎月SUM式の範囲を確認して調整する雑務から解放されると思います!

5
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?