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



i正在在Excel中创建一个模型,其中一个单元格计算两个单元格的总和,并每次两个依赖性更改值的单元格时都会增加值。例如,

如果,

a b = c

然后,

实例1: -> 5 5 = 10

实例2: -> 4 3 = 17

实例3: -> 2 3 = 22

等等...

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

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

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"出现在您的实际单元格中,持有运行和地址

将运行总数保留在公共变量(total(中。使用Workbook_open事件将其初始化为" Workbook"打开,以达到感兴趣的两个单元格的总和。然后,使用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所做的事情!我最初是为了调试而写的。

最新更新