【发布时间】:2019-03-29 20:28:45
【问题描述】:
我有下表:
Filter Notional Type Total
A 5000 A _____
B 1000 A
2500 B
3600 C
7500 C
8000 B
4500 C
700 C
下面的代码是为了计算名义值的过滤总和:
Sub filtersum()
Dim filterA, filterB as Variant
filterA = Cells (2, 1)
filterB = Cells (3, 1)
Dim i, n as Integer
k = Cells.Find("Type").Offset(1, 0).Row
n = Cells.Find("Type").End(xlDown).Row
Dim sum as Double
sum = 0
For i = k To n
If Cells(i, 3) = filterA Or Cells(i, 3) = filterB Then
j = Cells(i, 3)
sum = j + sum
End If
Next i
Cells.(2, 4).Value = sum 'Result under "Total"
End Sub
所以我现在正在做的是计算所有名义值的总和,即类型“A”或“B”。但是对于最终的应用程序,这还不够,因为现在我在代码中定义了每一个过滤条件(fiterA、filterB)。用户应该能够在表格中添加过滤条件,例如:
Filter Notional Type Total
A 5000 A _____
B 1000 A
C 2500 B
3600 C
7500 C
8000 B
4500 C
700 C
现在我必须准备代码并为 if 条件添加另一个条件,这在最终应用程序中是不可取的。
希望你有什么想法可以解决我的问题,谢谢!
【问题讨论】:
-
我会使用 SUMIFS 函数
标签: excel vba for-loop if-statement