(數(shù)據(jù)源) **高級篩選是Excel當(dāng)中一個十分有用的功能,而VBA有趣的地方就是我們可以通過錄制宏來代替高級篩選操作,一鍵生成數(shù)據(jù),免去多次重復(fù)操作的煩惱。錄制宏,其實很簡單。 (條件區(qū)域) **圖1是數(shù)據(jù)源,圖2是條件區(qū)域,設(shè)置好后,我們執(zhí)行錄制宏的操作,篩選基本工資和績效工資都大于5000的數(shù)據(jù)。如下gif **打開代碼窗口,得出錄制宏得代碼 **一般情況下,數(shù)據(jù)源是動態(tài)要更新的,會有刪有增,因此,多次重復(fù)操作高級篩選,將篩選的數(shù)據(jù)輸出到M1單元格的時候,就需要清除上一次的遺留數(shù)據(jù),再輸出新的數(shù)據(jù)。此代碼同樣可以通過錄制宏得出,就一個清空數(shù)據(jù)的動作而已。這里就不演示了。修改后的代碼如下 **新增2條符合條件的數(shù)據(jù),運行上面的代碼 **刪減幾條數(shù)據(jù),再次運行上面的代碼 **改變條件,只提取基本工資大于5000的數(shù)據(jù),再運行代碼 **如果要將篩選的數(shù)據(jù)放到另外的工作表,如下修改(新建一個工作表sheet3),只需要在每個Range前面指定每個Range對應(yīng)的工作表名稱即可。 **代碼注釋: 1:Sheets('sheet3').Range('a1:e10247').Clear >>清空sheet3工作表A1:E10247單元格的數(shù)據(jù) 2: Sheets('數(shù)據(jù)源').Range('表1[#All]').AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets('數(shù)據(jù)源').Range _ ('I1:J2') >>數(shù)據(jù)源和條件區(qū)域都放在工作表‘?dāng)?shù)據(jù)源’中 3:CopyToRange:=Sheets('sheet3').Range('a1'), Unique:=False >>復(fù)制篩選的數(shù)據(jù)放到工作表sheet3的A1單元格 |
|