以下代码中的ws1lastrow值为147583
我正在VB编辑器中执行下面的代码 . Debug.print用于跟踪已处理的行 . ws1lastrow值是147583
执行到5000或6000(每次计数更改)后,Excel停止响应,我必须重新启动并运行 .
出现这种情况的原因以及处理此问题的任何解决方案/提示?
Sub IdentifyMissingsNew()
Dim ws1 As Worksheet
Dim rws As Worksheet
Set ws1 = ThisWorkbook.Sheets("New")
Set rws = ThisWorkbook.Sheets("DelInt")
ws1lastrow = ws1.Cells(Rows.Count, 1).End(xlUp).Row
Set lookuprange = rws.Range("a1").CurrentRegion
For i = 2 To ws1lastrow
ws1.Cells(i, "ae") = Application.VLookup(ws1.Cells(i, "a"), lookuprange, 3, False)
Debug.Print i
Next i
End Sub
1 回答
在快速测试中,在不到3秒的时间内完成了对100k值表的200k行的查找 .
它比原始代码复杂一点,但如果你想优化速度,有时候是不可避免的 .
笔记:
使用脚本字典作为查找
将所有值读/写为最大速度的数组
码: