有条件计数过滤的范围

我有一个大约一百万行的工作表。 在一个特定的专栏中,我有从050,000数字。

我试图确定,在一个过滤的范围内,有多less个滤波范围内的单元落在一个特定的值内。

我可以轻松地做一个=COUNTIF(L:L, "<5000")来查看有多less行less于5,000,或者=COUNTIFS(L:L,">500",L:L,"<5000")看到在两个数字之间的TOTAL范围内的数字,但我无法弄清楚如何做一个过滤的范围中的任何一个

通常使用过滤的数据,我使用=SUBTOTAL函数,但是我看不到任何既定的=SUBTOTAL函数在这个例子中是如何工作的。

有任何想法吗?

这是一个VBA解决scheme。 我已经评论了代码,所以你不应该有任何问题的理解,但如果你这样做,然后简单地回发。

 Sub Sample() Dim ws As Worksheet Dim lRow As Long, n As Long Dim rng As Range, rngArea As Range '~~> Change this as applicable Set ws = ThisWorkbook.Sheets("Sheet1") With ws '~~> Finding last row in Col L lRow = .Range("L" & .Rows.Count).End(xlUp).Row - 1 'Debug.Print Intersect( _ .Range("L2:L" & lRow), _ .Range("L1").Offset(1, 0).SpecialCells(xlCellTypeVisible) _ ).Address '~~> This is your range of all visible cells till the last row in column L '~~> except the header: Set rng = Intersect( _ .Range("L2:L" & lRow), _ .Range("L1").Offset(1, 0).SpecialCells(xlCellTypeVisible) _ ) '~~> Since the area could be non contiguous we use Countif per area and add up For Each rngArea In rng n = n + Application.Evaluate("=COUNTIFS(" & rngArea.Address & _ ","">500""," & rngArea.Address & ",""<5000"")") Next Debug.Print n End With End Sub 

我确信这个事情发生在每个人身上,但是在阅读了这个话题的post之后,我花了30分钟而没有find任何东西,于是我发布了SO,只是为了find一个像4分钟后的解决scheme…….

此解决scheme适用于列L中的数据,其中我正在search的条件是“5000以下”

 =SUMPRODUCT(SUBTOTAL(2,OFFSET(L7,ROW(L7:L999999)-ROW(L7),,1)),--(L7:L999999 < 5000))