我制作了一个可能是我做过的最简单的宏,但运行需要5到8分钟。我究竟做错了什么?什么方法可以缩短运行时间?我不能一次又一次地等待它完成。这是代码。
Sub AB()
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
For i = 2 To 20
For y = 4 To 50
Sheets("A").Range("b7").Value = Sheets("B").Cells(y, 1).Value
Sheets("A").Range("b8").Value = Sheets("B").Cells(3, i).Value
Sheets("C").Calculate
Sheets("B").Cells(y, i).Value = Sheets("C").Range("b1").Value
Next y
Next i
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
End Sub
我必须在表C中包含“计算”,因为表C包含Excel公式。
有人可以提出比这更好的方法吗?
答案 0 :(得分:0)
我还面临着需要复制大量细胞并且每个细胞的“=”被证明太慢的情况。对我来说PasteSpecial Paste:=xlPasteValues
解决了这个问题 - 不确定它是否适用于您的情况。但是,range = cell,例如Range(Cells(2, 3), Cells(10000, 3)) = Cells(1, 3)
应该同样快速地工作。
另外,您可以考虑使用Sheets(1).Cells(7, 2)
代替Sheets("A").Range("b7")
作为“微速度优化”的问题。
要考虑的另一个方面是尽可能多地使用数组(用于临时值)并写入单元格,仅用于最终输出。
最后,值得研究this article因为我们经常忽略代码中某些会降低运行时性能的方面。