2017-09-07 1 views
0

Excel - VBA テーブルをフィルタリングした後にいくつの行があるかをカウントしたいと思います。 どうすればいいですか? は私がrows_count = Range("AX:AX").SpecialCells(xlCellTypeVisible).Count を試してみましたが、それは私の行の完全な数を与えますがこれは、あなたが全体の列の代わりに、ちょうどあなたのテーブルを参照しているためですエクセル2010フィルタリングされた行をカウントする

答えて

0

です。あなたがSheet1は、あなたが参照しているあなたのシートの名前ですので

With Sheets("Sheet1") 
    rows_count = Range(.Cells(1, "AX"), .Cells(.Cells(.Rows.Count, "AX").End(xlUp).Row, "AX")).SpecialCells(xlCellTypeVisible).Count 
End With 

を使用するreferrringていたシートを宣言する方が良いだろう

rows_count = Range(cells(1,"AX"), cells(cells(rows.count,"AX").end(xlup).row,"AX")).SpecialCells(xlCellTypeVisible).Count 

で試してみてください。

それとも、テーブルオブジェクトを使用している場合、あなたのフィルタを適用したらあなたは

With Sheets("Sheet1").ListObjects(1) 
    rows_count = .ListColumns(Columns("AX").Column).DataBodyRange.SpecialCells(xlCellTypeVisible).Count 
End With 
0

であなたの答えを得ることができ、ちょうどこのようなものを使用します。

rows_count = Worksheets("Sheet1").AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1 

をたとえば、にA2:C20と入力し、次のコードを使用しました。

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 
関連する問題