我有三个主要工作表:“输入”,“变量”和“结果”。工作表“输入”具有一个包含150个单元格的列表,用户可以进行输入,工作表“变量”具有一个包含3万多个点的列表,“结果”是代码的结果。
代码从工作表“输入”中获取一个点,在“变量”工作表中搜索该点,从该工作表中获取一堆信息,然后将其粘贴到“结果”工作表中。但是,该过程确实很慢,需要150至7分钟才能找到150个输入。有什么方法可以使它更快,或者至少有一半的时间?
下面是代码的简化版本,由于“输入”部分中存在很多条件,实际代码至少有5个“ for”和4个“ if”
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Dim tag As String
Dim var As String
Dim input As String
Dim i As Integer
Dim j As Integer
Set ws1 = Worksheets("inputs")
Set ws2 = Worksheets("variable")
Set ws3 = Worksheets("result")
For i = 2 To ws2.Range("C" & Rows.count).End(xlUp).Offset(1).Row
For j = b To ws2.Range("C" & Rows.count).End(xlUp).Offset(1).Row
var = ws2.Cells(j, 4)
input = ws1.Cells(i, 2), 12, 40)
If var = specs
DO STAFF HERE
End If
Next j
Next i
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
答案 0 :(得分:0)
您应该尝试将遍历所述数组的内容保存到数组中!似乎总是可以提高效率,但是就O(n2)以及其他所有方面而言,循环中的循环永远都很棒!
dist