首页 > 解决方案 > 应用带有保留公式的宏

问题描述

在将不同的值复制到相关单元格后,我想保留现有的公式。

我是 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

标签: excelvba

解决方案


如果您在没有绝对单元格引用的情况下复制该公式,您最终会得到#REF!错误,因为您试图引用列 A 左侧的列。如果您使用绝对引用,那么您将获得循环引用,因为公式包含对其所在单元格的引用。

您需要复制从公式返回的值并将其添加到目标,而不是公式本身。这样,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

推荐阅读