在Excel中的VBA过滤,有没有办法更好地优化它?

我有下面的代码,我从录制一个macros,但我觉得它有点慢,也许这是它应该是不确定的方式。 我在某处看到,macroslogging的方式可能不是最有效的方式,因此也是我的问题的原因

Sub CareFilter() Sheets("Main").Select On Error Resume Next ActiveSheet.ShowAllData ActiveSheet.Range("$A$1:$AX$10000").AutoFilter Field:=23, Criteria1:=Array( _ "LATE", "LATP/F", "PAY-"), Operator:=xlFilterValues ActiveSheet.Range("$M$1:$M$10000").AutoFilter Field:=13, Criteria1:=Array( _ "ATHRLE", "ATOCEE", "ATOCSE", "ATWCBC", "ATWCBE", "ATWCSE", "BLBSGE", "BLWCCE", _ "BRBESE", "BRBSAB", "BRBSAE", "BRBSGE", "BRBWRE", "BRCBSE", "BRCCBE", "BRCCCE", _ "BRCIS1", "BRCISE", "BROCSE", "BRSCBE", "BRWBSE", "BRWCBE", "BUBSGE", "BUOCBX", _ "BUOCSE", "BUWCBE", "BUWCSE", "HMCCBE", "KTCCBE", "KTCCOE", "KTCTCE", "KTMCCE", _ "KTOCE2", "KTOCE3", "KTOCEE", "KTPRSE", "KTRMTE", "KTSDCE", "KTSOOE", "KTWCSE", _ "MNATCE", "MNATRE", "MNCCOE", "MNHRLE", "MNMCCE", "MNPSSE", "MTBESB", "MTBSAB", _ "MTBSGB", "MTBSMB", "MTCBSB", "MTCHDB", "MTCTCB", "MTOCEB", "MTSCBB", "MTWBEB", _ "MTWBLB", "MTWBSB", "MTWCBB", "MTWCCB", "MTWCSB", "OTCIS1", "OTCISE", "OTOCSE", _ "OTSCBE", "OTSCSB", "OTWCBE", "PKCCBE", "PKCHDE", "PKHRLE", "PKLCBE", "PKLWBE", _ "PKOCSE", "PKPRIE", "PKPRSE", "PKSCBE", "PKWCBE", "PKWCSE", "YMBSAB", "YMBSAE", _ "YMBWRE"), Operator:=xlFilterValues ActiveSheet.Range("$A$1:$AW$10000").AutoFilter Field:=21, Criteria1:="<>" ActiveSheet.Range("$A$1:$AW$10000").AutoFilter Field:=22, Criteria1:=Array( _ "AWOL", "LATE", "LATF", "LATP", "OVAB", "PAY-"), Operator:=xlFilterValues ActiveSheet.Range("$A$1:$BD$10000").AutoFilter Field:=21, Criteria1:=">" & 1 / 10 ^ 10 Range("A1").Select End Sub 

macros只是我所需要做的只是希望有一个更快的方法来实现相同的结果。 我确实有一些这些macros正在做不同的事情。

任何帮助将不胜感激,并提前感谢。

如果filter将始终过滤相同的一组值,然后将它们放在一个单独的工作表上的列表中。 (我喜欢查找名称)在表格中添加要过滤的列,然后添加“匹配”function以在“查找”选项卡上查找相同的值。 匹配将返回find匹配值的行数或者表示不匹配的#N / A。 将匹配函数封装在if语句中以返回true / false(或0,1)并命名列QuickFilter。 扩展自动filter以包含新的列,然后selectTrue作为select。 在最困难的列上进行筛选后,重复其他列的过程。

匹配函数如下所示:

 =if(isna(Match('Lookups'!A1,"$M$1:$M$10000",0),"",True)) 

由于您正在执行多个列组合,因此可以分别使用0,1作为false,true,然后为其他search条件添加类似的公式。

因此,如果条件列1匹配,那么公式将是1 PLUS,如果条件列2匹配,那么1 …只筛选加起来为5的值。

这一切都是基于公式的,但是一旦公式被testing,就可以自动填充列。

如果这是有道理的,并且需要额外的帮助,请回复。