文字列をセル参照にしてくれるINDIRECT関数とSUM関数を組み合わせた計算式で、C1セルに入力された行までの合計を計算できることをご紹介しました。
同じようなことはOFFSET関数でも可能です。
OFFSETはVBAのRange.OffsetとRange.Resizeが組み合わさったような関数
OFFSET関数は、便利ですが難易度もちょっと高い、ワークシート関数です。
なぜ難易度が高いかというと、二つの機能が混在した関数だからです。
Excel VBAの、Range.OffsetプロパティとRange.Resizeプロパティを理解できている方なら、OFFSET関数の二つの機能を理解しやすいはずです。
RangeオブジェクトのOffsetプロパティに該当する機能を、OFFSET関数の第2・第3引数が担い、
RangeオブジェクトのResizeプロパティに該当する機能を、OFFSET関数の第4・第5引数が担っています。
OFFSET関数を使って合計範囲を可変にする数式のサンプル
そんなOFFSET関数の、Range.Resizeプロパティ的な機能を使うと、INDIRECT関数で行ったような、SUM関数で合計する範囲を可変にすることができます。=SUM(OFFSET(A1, , , C1, 1))
という数式を入力する
上記のような数式を作成すると、A1セルから、C1セルに入力された行までの合計をD1セルに計算できます。
C1セルに、「10」を入力したときはA1:A10セルの合計が、「5」を入力したときはA1:A5セルの合計がD1セルに計算されます。
OFFSET関数の第4・5引数
OFFSET関数の、第4引数と第5引数を使うと、第1引数に指定されたセルを基準にした、行数・列数のセル参照が取得できます。
例えば、
=OFFSET(A1, , , 10, 1)
という数式は、A1セルを基準にして、第4セルに指定された「10」行・第5セルに指定された「1」列の参照となるので、A1:A10セルへの参照になります。
例えば、
=OFFSET(A1, , , 5, 1)
という数式は、A1セルを基準にして、第4セルに指定された「5」行・第5セルに指定された「1」列の参照となるので、A1:A5セルへの参照になります。
このOFFSET関数の第4セルをC1セルへの参照にしたのが、上記の数式、
=SUM(OFFSET(A1, , , C1, 1))
のSUM関数に指定している引数、
OFFSET(A1, , , C1, 1)
です。
最終更新日時:2018-11-11 04:13
Home » Excel(エクセル)の関数・数式の使い方 » 検索・行列 » OFFSET関数を使って合計範囲を可変に