从添加中存储结果单元格值,然后每次将其添加到新结果中

时间:2018-04-01 00:51:37

标签: excel vba

我在Excel中创建一个模型,其中一个单元格计算两个单元格的总和,并在每次依赖它的两个单元格改变值时继续添加该值。例如,

如果,

A + B = C

然后,

实例1: - > 5 + 5 = 10

实例2: - > 4 + 3 = 17

实例3: - > 2 + 3 = 22

依旧......

我相信这可以通过VB脚本来实现。

2 个答案:

答案 0 :(得分:2)

您只需将以下代码放在工作表代码窗格中:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Range("A1:A2"), Target) Is Nothing Then Exit Sub
    Range("B1") = Range("B1") + WorksheetFunction.sum(Range("A1:A2"))
End Sub

当然你必须改变:

  • 所有“A1:A2”出现在您的实际单元格中以求和地址

  • 所有“B1”出现在您的实际单元格中,并保存了运行总和地址

答案 1 :(得分:0)

将运行总计保存在公共变量(total)中。在工作簿使用workbook_open事件打开时,将其初始化为两个感兴趣的单元格的总和。然后使用worksheet_change事件监视对这两个单元格的更改,如果有任何更改,则将其新值添加到现有值total。我使用了单元格C1来显示运行总计。

在标准模块中:

Option Explicit

Public total As Long
Public targetCell As Range

在ThisWorkbook代码窗格中

Option Explicit

Private Sub Workbook_Open()

    With ThisWorkbook.Worksheets("Sheet1")

        Set targetCell = .Range("C1")

        total = Application.WorksheetFunction.Sum(.Range("A1:B1"))
        targetCell = total

    End With

End Sub

在要监控的单元格

的工作表代码窗格中
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
        total = total + Target
        targetCell = total
    End If

    If Not Application.Intersect(Target, Range("B1")) Is Nothing Then
        total = total + Target
        targetCell = total
    End If

End Sub

或正确执行@DisplayName所做的事情!我最初写的是一个总计的Debug.Print(不写入单元格),忘了重新考虑因素。