如何使用目标地址获取一系列单元格的总和?
How can I use target address to get sum of a range of cells?
我有来自 worksheet_change 潜艇的 target.address(或只是目标)。我想使用 target.address 中的行和一系列列 (H:W),并获得该范围的总和。因此,例如,如果我在 H10 中有 100 美元并且在 J10 中添加 50 美元,我想得到 150 美元的总和,因为我的 target.address 行是 10 并且我在我想要的列范围内 H:W.
您可以使用 Intersect
和 EntireRow
来确定要对哪些单元格求和。我会把它们交给 Application.Sum
来计算。再次调用 Intersect
将让您知道更改的单元格是否在 "boxed" 区域中。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sum As Double
Dim rng_match As Range
Set rng_match = Range("H:W")
If Target.Cells.Count = 1 Then
If Not Intersect(Target, rng_match) Is Nothing Then
sum = Application.sum(Intersect(Target.EntireRow, rng_match))
End If
End If
End Sub
编辑: 根据@Tim Williams 添加了对 Target.Cells.Count
的检查,以确保总和不受多单元格编辑的影响。如果这是一个问题,Else
需要解决下一步该怎么做。
我有来自 worksheet_change 潜艇的 target.address(或只是目标)。我想使用 target.address 中的行和一系列列 (H:W),并获得该范围的总和。因此,例如,如果我在 H10 中有 100 美元并且在 J10 中添加 50 美元,我想得到 150 美元的总和,因为我的 target.address 行是 10 并且我在我想要的列范围内 H:W.
您可以使用 Intersect
和 EntireRow
来确定要对哪些单元格求和。我会把它们交给 Application.Sum
来计算。再次调用 Intersect
将让您知道更改的单元格是否在 "boxed" 区域中。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sum As Double
Dim rng_match As Range
Set rng_match = Range("H:W")
If Target.Cells.Count = 1 Then
If Not Intersect(Target, rng_match) Is Nothing Then
sum = Application.sum(Intersect(Target.EntireRow, rng_match))
End If
End If
End Sub
编辑: 根据@Tim Williams 添加了对 Target.Cells.Count
的检查,以确保总和不受多单元格编辑的影响。如果这是一个问题,Else
需要解决下一步该怎么做。