Excel 存储加法得到的单元格值,然后每次将其添加到新结果中
我正在Excel中创建一个模型,其中一个单元格计算两个单元格的总和,并在它所依赖的两个单元格每次更改值时不断向值添加。比如说, 如果, A+B=C 那么 实例1:->5+5=10 实例2:->4+3=17 实例3:->2+3=22 等等Excel 存储加法得到的单元格值,然后每次将其添加到新结果中,excel,vba,Excel,Vba,我正在Excel中创建一个模型,其中一个单元格计算两个单元格的总和,并在它所依赖的两个单元格每次更改值时不断向值添加。比如说, 如果, A+B=C 那么 实例1:->5+5=10 实例2:->4+3=17 实例3:->2+3=22 等等 我相信这可以通过VB脚本实现。在公共变量(total)中保存运行总数。当工作簿打开时,使用“工作簿\打开”事件将其初始化为两个感兴趣的单元格之和。然后使用“工作表更改”事件监视对这两个单元格的更改,如果其中任何一个单元格发生更改,则将其新值添加到现有值total
我相信这可以通过VB脚本实现。在公共变量(
total
)中保存运行总数。当工作簿打开时,使用“工作簿\打开”事件将其初始化为两个感兴趣的单元格之和。然后使用“工作表更改”事件监视对这两个单元格的更改,如果其中任何一个单元格发生更改,则将其新值添加到现有值total
。我已经使用单元格C1
来显示运行总数
在标准模块中:
Option Explicit
Public total As Long
Public targetCell As Range
在此工作簿代码窗格中
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
在要监视的单元格所在的工作表代码窗格中
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所做的操作!我最初写这篇文章是为了调试。打印总计(而不是写入单元格)并忘记重新计算系数。您只需在工作表代码窗格中输入以下代码:
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”事件都指向您的实际单元格,该单元格包含运行总和地址