VBA獲取篩選後記錄數量

Excel的篩選是一個常用功能,即使是入門不久的小白也會使用。但是在VBA處理數據時,如果工作表中的數據表使用了篩選,那麼使用VBA如何知道到底有多少行處於顯示狀態呢?

如下圖數據表中有12行數據(不包括標題行),經過篩選後,在狀態條左側可以輕鬆地知道:有4條記錄符合篩選規則。
在這裏插入圖片描述
下面看看如何使用代碼獲取篩選後的記錄數量。

Sub RowCntAfterFilter1()
    Dim rng As Range
    Dim c As Range
    Dim n As Integer
    Set rng = [a1].CurrentRegion 
    For Each c In rng.SpecialCells(xlCellTypeVisible).Areas
        n = n + c.Rows.Count
    Next c
    MsgBox "篩選後數據行數爲:" & n - 1
End Sub

【代碼解析】
第5行代碼使用CurrentRegion獲取當前數據區域,並賦值給對象變量rng。
第6行到第8行代碼使用For...Next循環遍歷當前數據區域,其中SpecialCells(xlCellTypeVisible)獲取可見數據區域,也就是符合篩選添加的數據行。
第6行代碼中的Areas也可以使用Rows代替,對於連續的可見行屬於同一個Area,因此使用Areas可以減少循環次數,提升代碼效率。
第7行代碼進行累加計數統計行數。
第9行代碼輸出結果如下圖所示,注意由於數據標題行也包含在CurrentRegion中,因此顯示結果時需要使用n - 1

在這裏插入圖片描述

發佈了105 篇原創文章 · 獲贊 49 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章