首页 文章

Excel VBA减少了自动过滤宏的处理时间

提问于
浏览
0

我有一个包含1个工作表的工作簿,其中包含14k行和36列 . 第24至36列包含公式(ao find和vlookup公式) .

计算设置为手动 .

我创建了一个测试宏,在数据集上设置了自动过滤器,我包含了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

1 回答

  • 0

    如果公式尚未更新,则第一个autofilter命令将更新它们,即使使用Application.Calculation = xlCalculationManual也是如此 . 因此,在使用Autofilter之前,您可能希望使用如下命令更新公式:

    Application.Calculation = xlCalculationAutomatic
    

相关问题