更新总和公式以通过宏包括最近插入的行

时间:2019-05-19 08:34:34

标签: excel vba

我使用宏在支出列表的末尾插入新行。插入行后,我需要包含总计公式的“总费用”单元格来更新其求和的单元格,以包括刚刚插入的新行。如果将行插入列表的中间,这没问题,但是如果将它作为列表中的最后一个费用插入,则求和公式将需要更新,我想在宏本身中进行此操作。

我尝试过以下变化:

totalExpense.Formula = "=Sum(D" & ExpensesStart & ":D" & NewExpensesEnd & ")"
as well as:
totalExpense.Value = Application.Sum(Range(Cells(4, ExpensesStart)), Range(Cells(4, NewExpensesEnd)))

...

Worksheets("Income Statement").Activate

    '[Code to locate the row index of the last "expense" row]

    'Insert Row Above "Total Expenses"
    Rows(count).Insert Shift:=xlDown, _
      CopyOrigin:=xlFormatFromLeftOrAbove

    'Add Name of the Expense
    Range("B" & count).Value = nameValue

    ExpStart = 2
    flag = True

    'Locate row index for start of Expenses
    Do While flag
        'I know it seems weird to immediately add 1, but this is fine
        ExpStart = ExpStart + 1
        If (Range("A" & ExpStart).Value = "Expenses") Then flag = False
    Loop

    'Adjust by 1 row to identify 1st actual expense category
    ExpStart = ExpStart + 1
    totalExpense.Formula = "=Sum(D" & ExpStart & ":D" & NewExpensesEnd & ")"

要么我得出的单元格公式为“ = Sum(0,0)” ,要么我最终得出的单元格值为0。一旦我能够获得它可以正确地求和正确的范围,但是它不会保留公式“ = Sum(D7:D10)” ,而是对范围求和并保留值。鉴于宏运行后其他值会发生变化,因此我需要该单元格中的求和公式,而不是运行宏时的总和。

1 个答案:

答案 0 :(得分:0)

假设您现有的求和范围为D7:D10,则可以在工作表中使用求和公式(即不在代码中),例如:

sibs(B,C) sibs(C,B)

这样,如果您在D11之前插入新的单元格/行,则无需更改它。