Применение макроса с соблюдением формул - PullRequest
0 голосов
/ 01 января 2019

Я хочу сохранить свою существующую формулу после того, как скопирую другое значение в связанную ячейку.

Я новичок в Excel VBA, и мне нужно решить проблему.У меня есть значение накопленного итога предыдущего периода в ячейке A1.Ячейка B1 является значением этого месяца.Наконец, C1, он суммирует предыдущий период и этот месяц и дает совокупную общую стоимость.

Итак, я уже написал макрос для этого, но в следующем месяце мне нужно скопировать значение в C1 и вставить его в A1, чтобы оно автоматически снова суммировало a1 + b1 и записывало в c1.Однако, когда я применяю макрос для копирования значения, он уничтожает формулу суммы.

Sub sumfunc()
    Range("C1").Formula = "=A1+B1"
    Range("C1:C3").FillDown
End Sub

Sub copyfunc()
    Worksheets("Sheet1").Range("C1:C3").Copy _
    Destination:=Worksheets("Sheet1").Range("A1")
End Sub

1 Ответ

0 голосов
/ 01 января 2019

Если вы скопируете эту формулу без абсолютных ссылок на ячейки, вы получите #REF!ошибка, поскольку вы пытаетесь сослаться на столбец слева от столбца А. Если вы используете абсолютные ссылки, вы получите циклическую ссылку, потому что формула содержит ссылку на ячейку, в которой она находится.

Вам необходимо скопироватьзначение, возвращаемое из формулы, и добавьте его к цели, а не к самой формуле.Таким образом, значение из формулы в столбце C будет отражать растущую сумму.

Sub sumfunc()

    Worksheets("Sheet1").Range("C1:C3").Formula = "=A1+B1"

End Sub

Sub copyfunc()

    with Worksheets("Sheet1")
        .Range("C1:C3").Copy
        .Range("A1").pastespecial paste:=xlpastevalues, operation:=xladd
    end with

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