过去几天我一直在使用VBA代码,并且一切看起来都很好,直到我将下面的代码添加到它的一个好日子里。它的执行时间增加到了我无法完成的程度。我已经等了将近2个小时,但它仍在继续运行。减少宏时间
本数据表大小约为15 MB,包含大约47,000行,25列填充数据。我已经运行这个代码删除行的基础上的列“H”的多个条件。
这是代码。高度赞赏任何减少运行时间的帮助。
谢谢...
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.DisplayStatusBar = False
Workbooks("Vivar_Template_Blank.xlsx").Sheets("Main & PCO Working").Activate
Dim ws As Worksheet, i&, lastRow&, value$
Set ws = ActiveWorkbook.ActiveSheet
lastRow = ws.Range("H" & ws.Rows.Count).End(xlUp).Row
For i = lastRow5 To 2 Step -1
value = ws.Cells(i, 8).value
If Not (value Like "*Supplier Name*" _
Or value Like "*[PO]Supplier (Common Supplier)*" _
Or value Like "*ACCENTURE LLP*" _
Or value Like "*COGNIZANT TECHNOLOGY SOLUTIONS US CORP*" _
Or value Like "*INFOSYS LIMITED*" _
Or value Like "*INFOSYS TECHNOLOGIES LTD*" _
Or value Like "*INTERNATIONAL BUSINESS MACHINES CORP DBA IBM CORP*" _
Or value Like "*MINDTREE LIMITED*" _
Or value Like "*SYNTEL INC*" _
Or value Like "*TATA AMERICA INTERNATIONAL CORPORATION*") _
Then
ws.Rows(i).Delete
End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.DisplayStatusBar = True
可能是因为它必须为每一行评估10个If语句。如果你可以删除'Like'部分,我猜它会变得更有效率,因为可能的匹配数量会变小。 – Luuklag
这应该被移植到[代码评论](http://codereview.stackexchange.com/) – R3uK
感谢您的建议。然而,你有什么建议,以取代'像'... –