优化此vba代码以在很短的时间内运行

优化此vba代码以在很短的时间内运行,vba,for-loop,Vba,For Loop,我有下面的代码 For rptlop = 3 To ThisWorkbook.Worksheets("Raw").UsedRange.Rows.Count For sulop = 4 To ThisWorkbook.Worksheets("Calculated").UsedRange.Rows.Count If InStr(LCase(Worksheets("Calculated").Cells(sulop, 2)), LCase(Worksheets("Raw").Ce

我有下面的代码

For rptlop = 3 To ThisWorkbook.Worksheets("Raw").UsedRange.Rows.Count
    For sulop = 4 To ThisWorkbook.Worksheets("Calculated").UsedRange.Rows.Count
        If InStr(LCase(Worksheets("Calculated").Cells(sulop, 2)), LCase(Worksheets("Raw").Cells(rptlop, 1))) >= 1 _
        And InStr(LCase(Worksheets("Calculated").Cells(sulop, 1)), LCase(Worksheets("Raw").Cells(rptlop, 2))) >= 1 _
        And InStr(LCase(Worksheets("Calculated").Cells(sulop, 1)), LCase(Worksheets("Raw").Cells(rptlop, 3))) >= 1 Then
            ThisWorkbook.Worksheets("Raw").Cells(rptlop, 5) = ThisWorkbook.Worksheets("Calculated").Cells(sulop, clmqtr(Worksheets("Raw").Cells(rptlop, 4)))
            Exit For
        End If
    Next sulop
Next rptlop
我也有一个功能

Function clmqtr(myqtr) As Long
    Dim suclm As Long
    For suclm = 4 To ThisWorkbook.Worksheets("Calculated").UsedRange.Columns.Count
        If ThisWorkbook.Worksheets("Calculated").Cells(3, suclm) = myqtr Then
            clmqtr = suclm
            Exit For
        End If
    Next suclm
End Function

rptlop
中,我有2900行在
sulop
中,我有70000多行。如何优化此代码以在很短的时间内运行?

在执行代码之前,两个直接的想法是
禁用屏幕更新
,以及
将计算设置为手动
。这将防止excel在代码完成之前引用屏幕并执行计算

'before your loop
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

'
'   your code here
'

'after your code executes, be sure to turn calculation and screen updating back on
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

您可以发布一个示例文件供我们使用吗?您可以在代码开头使用
Application.screenUpdate=False
,最后将其设置回
True
,以在运行宏时禁用屏幕刷新。这可以带来惊人的性能提升一句话:在执行此操作时,最好在错误上添加
转到Catch
Catch:
块。如果代码出现错误,应用程序屏幕仍将返回。