vba 程序运行慢 如何优化

Sub 数据整理()
Dim arr()
Dim i, n As Integer
i = Range("b65536").End(xlUp).Row
arr = Range("a1" & ":" & "s" & i)
For n = 2 To i
If Len(arr(n, 12)) = 11 Then
arr(n, 15) = arr(n, 12)
arr(n, 12) = "集装箱"
Cells(n, "l") = arr(n, 12)
Cells(n, "O") = arr(n, 15)
End If

If arr(n, 12) = "高拦" Then
arr(n, 12) = "高栏"
Cells(n, "l") = arr(n, 12)
ElseIf arr(n, 12) = "后开门" Or arr(n, 12) = "侧开门" Then
arr(n, 12) = "箱车"
Cells(n, "l") = arr(n, 12)
ElseIf arr(n, 12) <> "飞翼" And arr(n, 12) <> "超长车" And arr(n, 12) <> "集装箱" And arr(n, 12) <> "箱车" And arr(n, 12) <> "高栏" Then
arr(n, 12) = "其他"
Cells(n, "l") = arr(n, 12)
End If

Dim qy As Date
qy = "1月2日"
If arr(n, 13) = qy Then
arr(n, 13) = "1、2号库之间"
Cells(n, "m") = arr(n, 13)
ElseIf arr(n, 13) = 3 Then
arr(n, 13) = "3号库"
Cells(n, "m") = arr(n, 13)
End If

If arr(n, 5) < 8.5 / 24 Then
arr(n, 1) = arr(n, 4) - 1
Cells(n, "a") = arr(n, 1)
Else

Cells(n, "a") = arr(n, 4)
End If

Next

End Sub

把所有对cells(n,"a")=arr(n,4)这样的语句都修改为arr(n,1)=arr(n,4),数据更新arr,不要更新cells。

在所有代码的最后用下面的语句把arr回填到cells里面:
cells(1,1).resize(ubound(arr), ubound(arr,1))=arr追问

初学,不太懂这句代码是什么意识,能解析下吗,非常感谢

追答

因为arr是内存数组,这样的语句非常快:
arr(...)=...

因为cells是单元格,下面的语句会很慢许多倍:
cells(...)=....

所以我做了前面回答的建议,请按我说的修改,看看速度是否加快,有问题请补充。

追问

非常感谢,不过最后代码应该是(arr,2)

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网