VBA獲取篩選後記錄數量

2021-10-02 09:51:54 字數 1086 閱讀 9643

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

mybatis獲取插入後記錄的主鍵

如果有如下情況,在插入資料庫記錄後,想得到插入記錄的主鍵,用以後面的業務 那麼mybatis針對這種情況也提供了相應的支援 不支援批量插入 mysql是原聲自增id 假設自增主鍵的欄位名就為id insert into name,age values 比普通的插入就多了兩個屬性 usegenerat...

mysql 如何高效獲取新插入的最後記錄

在mysql中,使用auto increment型別的id欄位作為表的主鍵,並用它作為其他表的外來鍵,形成 主從表結構 這是資料庫設計中常見的用法。但是在具體生成id的時候,我們的操作順序一般是 先在主表中插入記錄,然後獲得自動生成的id,以它為基礎插入從表的記錄。這裡面有個困難,就是插入主表記錄後...

通過 ResultSet 獲取行記錄數

resultset沒有方法直接得到記錄數,只有另想方法,下面我介紹一下我取記錄數方法 如果只要得到記錄數,可以直接用sql語句的select count 得出來,但結果我既想得到記錄數,同時也需要用到記錄集的資料呢?那就要用到下面這種方法了。resultset rs rs.last 移到最後一行 i...