[英]Summing cells with a variable range
我有一張用於我辦公室的工作表。 有時,一個部分需要一些額外的行,所以我創建了一個按鈕來添加所述行(對於非 Excel 用戶)。 該部分的底部是一個簡單的 <=SUM(D82:D92)>。 這樣,每當添加數據時,就會對數量進行求和。
但是,當添加新行時,求和公式保持不變。 我正在嘗試將 D92 更改為 D93(等等)。 如何添加一行並更新總和公式以使其保持動態。 請對以下代碼提供建議:
'botton cell in sum range
Dim BC As String
Dim rng As Range
BC = ActiveCell.Address
Set rng = Range(Range("d82"), Range(BC))
ActiveCell.Offset(1, 0).Select
ActiveCell = WorksheetFunction.Sum(rng)
編輯:修復它!
ActiveCell.Offset(1, 3).Select
ActiveCell.FormulaR1C1 = "=SUM(R82C4:R[-1]C)"
如果您不介意使用帶有OFFSET
的公式,您可以將單元格D93
中的=SUM(D82:D92)
更改為=SUM(D82:OFFSET(D93,-1,0))
。 此公式將按預期更新:它將繼續尋找對自身上方 1 行的引用以找到總和范圍的結尾。 例如,帶有Range("D93").EntireRow.Insert
的 sub 會將公式推入D94
,現在為=SUM(D82:OFFSET(D94,-1,0))
。
編輯:我建議OFFSET
,認為在這種情況下INDEX
是不可能的,但當然可以。 使用輸入D93
的=SUM(D82:INDEX(D82:D93,ROW(93:93)-82))
相同的結果。 好處是OFFSET
是一個“易失函數”,它將隨着每個工作表的更改而重新計算。 使用INDEX
,您就沒有這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.