如何根据应用的过滤器计算包含数据的行数?
所有我能找到的方法都是像xlUp, xlDown
这样的方法我不能应用于此,因为它会给我最后一行而不是带有过滤数据的行数。
例如
1 animal age
2 dog 10
3 cat 15
我在cat上应用过滤器并获取下表:
1 animal age
3 cat 15
用xlUp或向下它会告诉我最后一行数是3,但显然只有1行带有过滤数据
答案 0 :(得分:5)
工作表的SUBTOTAL function可以计算列中的可见数据。
dim i as long
i = application.subtotal(103, columns(1))
debug.print i
答案 1 :(得分:4)
这个怎么样?它计算过滤范围内第一列中的可见细胞。
Sub test()
data_visible_rows = ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1
End Sub
答案 2 :(得分:0)
假设您有A1范围内的数据:C3
并且您手动应用了过滤器
然后声明
dim rng as Range
set rng = Range("$A$2:$C$3").SpecialCells(xlCellTypeVisible)
将返回对仅包含可见单元格的Range的引用。所以你省略了标题。
然后你可以打电话rng.Count / rng.Columns.Count
获得所需的结果。当然,你可以一次性完成,而不需要任何声明。我之前的解释仅用于指导目的。
Range("$A$2:$C$3").SpecialCells(xlCellTypeVisible).Count / Range("$A$2:$C$3").Columns.Count
这应该有用。