计算包含公式的工作表时缓慢macros

我做了一个macros,这也许是我做过的最简单的一个macros,但是运行了将近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公式。

有人可以build议比这更好的方法吗?

我还面临着需要复制大量信元的情况,并且每个信元的“=”被certificate是太慢的。 对我来说PasteSpecial Paste:=xlPasteValues解决了这个问题 – 不知道它是否适用于你的情况。 虽然,range = cell,例如Range(Cells(2, 3), Cells(10000, 3)) = Cells(1, 3)应该同样快。

此外,您可以考虑使用类似Sheets(1).Cells(7, 2)而不是Sheets("A").Range("b7")作为“微速优化”。

还有一个方面要考虑的是尽可能使用数组(中间值),并写入单元格,最终输出只。

最后,值得关注这篇文章,因为我们经常忽略代码的一些方面,这会降低运行时的性能。