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 
관련 문제