Excel - VBA
我想计算过滤表后有多少行。
我该怎么做呢?
我试过rows_count = Range("AX:AX").SpecialCells(xlCellTypeVisible).Count
但这给了我Excel 2010中的完整行数。
答案 0 :(得分:0)
这是因为您指的是整个列而不仅仅是您的表。试试
rows_count = Range(cells(1,"AX"), cells(cells(rows.count,"AX").end(xlup).row,"AX")).SpecialCells(xlCellTypeVisible).Count
最好声明您要引用哪张表格,以便使用
With Sheets("Sheet1")
rows_count = Range(.Cells(1, "AX"), .Cells(.Cells(.Rows.Count, "AX").End(xlUp).Row, "AX")).SpecialCells(xlCellTypeVisible).Count
End With
Sheet1
是您所指的工作表的名称。
或者,如果您使用的是表格对象,则可以使用
获得答案With Sheets("Sheet1").ListObjects(1)
rows_count = .ListColumns(Columns("AX").Column).DataBodyRange.SpecialCells(xlCellTypeVisible).Count
End With
答案 1 :(得分:0)
一旦您应用了过滤器,只需使用以下内容:
rows_count = Worksheets("Sheet1").AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1
例如,我使用A2:C20
填充了=RAND()
并使用了以下代码:
Sub filter()
Dim sht As Worksheet
Dim rng As Range
Set sht = ThisWorkbook.Worksheets("Sheet1")
Set rng = sht.Range("A1:C20")
sht.AutoFilterMode = False
rng.AutoFilter Field:=1, Criteria1:="<0.5"
MsgBox sht.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1
End Sub