我正在尝试摸索一些 VBA 脚本。我在网上找到了这段代码,它允许在以下情况下执行 SumIf 函数:单身的条件满足。我想将其扩展为两个或三个条件。
Function SumIfVisible(rng As Range, condition, rngSum As Range) As Double
Dim i As Long
For i = 1 To rngSum.Count
If rng(i) = condition And rngSum(i).EntireRow.Hidden = False Then
SumIfVisible = SumIfVisible + rngSum(i)
End If
Next I
End Function
为了澄清起见,我想见多位状况在多个范围。 IE条件1在范围 D2:D200和条件2和条件 3在范围 H2:H200。
此外,范围可能有部分不同在特定意义上不满足价值观,但整体上满足条件,即条件1 = “Jan”,范围D2:D200包含日期如“1-Jan,2-Jan,3-Jan”等。“”中的所有日期都满足条件。SUMIFS 不允许对单元格值进行截断字符串选择。例如,选择包含“Jan”的每一行,即使它包含其他值,如“1,2,3”
请帮忙!
答案1
假设您的数据包含文本而不是格式化的日期d-mmm
,那么这应该可以帮助您开始:
=SUMIFS(B1:B2,A1:A2,"*Jan")
或者如果你有实际日期:
=SUMIFS(B1:B2,A1:A2,">=1/1/2016",A1:A2,"<=1/31/2016")
B1:B2 是求和范围,A1:A2 是条件范围。
请注意,其中SUMIFS()
包括隐藏的行,因此如果排除隐藏的单元格是您的标准的一部分,您将需要SUBTOTAL()
或AGGREGATE()
如上所述。