(數(shù)據(jù)源)
**高級篩選是Excel當(dāng)中一個(gè)十分有用的功能,而VBA有趣的地方就是我們可以通過錄制宏來代替高級篩選操作,一鍵生成數(shù)據(jù),免去多次重復(fù)操作的煩惱。錄制宏,其實(shí)很簡單。
(條件區(qū)域)
**圖1是數(shù)據(jù)源,圖2是條件區(qū)域,設(shè)置好后,我們執(zhí)行錄制宏的操作,篩選基本工資和績效工資都大于5000的數(shù)據(jù)。如下gif
**打開代碼窗口,得出錄制宏得代碼
**一般情況下,數(shù)據(jù)源是動(dòng)態(tài)要更新的,會(huì)有刪有增,因此,多次重復(fù)操作高級篩選,將篩選的數(shù)據(jù)輸出到M1單元格的時(shí)候,就需要清除上一次的遺留數(shù)據(jù),再輸出新的數(shù)據(jù)。此代碼同樣可以通過錄制宏得出,就一個(gè)清空數(shù)據(jù)的動(dòng)作而已。這里就不演示了。修改后的代碼如下
**新增2條符合條件的數(shù)據(jù),運(yùn)行上面的代碼
**刪減幾條數(shù)據(jù),再次運(yùn)行上面的代碼
**改變條件,只提取基本工資大于5000的數(shù)據(jù),再運(yùn)行代碼
**如果要將篩選的數(shù)據(jù)放到另外的工作表,如下修改(新建一個(gè)工作表sheet3),只需要在每個(gè)Range前面指定每個(gè)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單元格
聯(lián)系客服