2017-08-04 97 views
0

我有一个工作簿,其中包含一个包含14k行和36列的工作表。列24到36包含公式(ao find和vlookup公式)。Excel VBA减少自动筛选宏的处理时间

计算设置为手动。

我创建了一个测试宏,它在数据集上设置了自动过滤器,并且我包含了4个过滤条件(请参阅下面的代码)。奇怪的是,当我第一次运行这个宏时,它需要109秒的运行时间,第二次需要17秒,第三次和连续的时间约为0.3秒。我觉得这很奇怪。这怎么可能发生,我能做些什么来第一次获得0.3秒?

谢谢。

Sub test() 
Dim ws As Worksheet 
Dim ws As Worksheet  
Dim rng As Range  
Dim PG() 

PG = Array(“441”, “445”, “446”, “447”) 
Set ws = Worksheets(“Notificaties”) 
ws.AutoFilterMode = False 
Set rng = ws.Range(“A1”) 
Set rng = ws.Range(rng, rng.End(xlToRight)) 

With rng  
.AutoFilter  
.AutoFilter Field:=4, Criteria1:=”TWAP*”  
.AutoFilter Field:=29, Criteria1:=”<>*II*”  
.AutoFilter Field:=30, Criteria1:=”TRUE”  
.AutoFilter Field:=22, Criteria1:=PG, Operator:=xlFilterValues 
End With 

End Sub 
+0

尝试更换'标准1:用'标准1 = PG':=(PG)'。好点 ? –

+0

@Johan;你可能想尝试https://codereview.stackexchange.com/这种类型的问题。如果代码正常工作并需要优化,那将是更理想的网站。 – Cyril

回答

0

如果公式尚未更新,他们将在第一自动筛选命令更新,即使Application.Calculation = xlCalculationManual。因此,使用自动筛选之前,您可能需要使用类似下面的命令来更新公式:

Application.Calculation = xlCalculationAutomatic