Обновить формулу суммы, чтобы включить недавно добавленную строку с помощью макроса - PullRequest
0 голосов
/ 19 мая 2019

Используя макрос, я вставляю новую строку в конец списка расходов. После того, как строка вставлена, мне нужна ячейка «Всего расходов», которая содержит формулу суммы, чтобы обновить ячейки, которые суммируются вместе, чтобы включить новую строку, которая была только что вставлена. Если строка вставлена ​​в середину списка, нет проблем, но если она вставлена ​​как последний расход в списке, формулу суммы необходимо будет обновить, и я хотел бы сделать это в самом макросе.

Я пробовал варианты на:

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 голосов
/ 19 мая 2019

Предполагая, что существующим диапазоном суммирования является D7: D10, вы можете использовать формулу суммирования в рабочем листе (т.е. не в коде), например:

=SUM(D7:OFFSET(D11,-1,0))

Таким образом, нет необходимости изменять его, если вывставьте новую ячейку / строку перед D11.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...