Vba 计算包含公式的工作表时执行慢速宏

Vba 计算包含公式的工作表时执行慢速宏,vba,excel,Vba,Excel,我做了一个宏,这可能是我做过的最简单的宏,但是运行它几乎需要5到8分钟。我做错了什么?如何缩短跑步时间?我不能一次又一次地等待让它完成。这是密码 Sub AB() Application.ScreenUpdating = False Application.EnableEvents = False Application.DisplayAlerts = False Application.Calculation = xlCalculationManual For i = 2 To 20 Fo

我做了一个宏,这可能是我做过的最简单的宏,但是运行它几乎需要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公式


有人能提出比这更好的方法吗

我还面临需要复制大量单元格的情况,而每个单元格的“=”速度太慢。对于我来说,
PasteSpecial Paste:=xlPasteValues
解决了这个问题-不确定它是否适用于您的情况。不过,范围=单元格,例如
范围(单元格(2,3),单元格(10000,3))=单元格(1,3)
应该同样快。

此外,您可能会考虑使用类似
的表(1)。单元格(7,2)
而不是
表(“A”)。范围(“b7”)
作为“微速优化”的一部分。 BR>另一个要考虑的方面是尽可能多地使用数组(对于中间值),并且只对最终的输出写。
最后,值得一提的是,我们往往会忽略一些降低运行时性能的代码方面。

我还面临需要复制大量单元格的情况,而每个单元格的“=”速度太慢。对于我来说,
PasteSpecial Paste:=xlPasteValues
解决了这个问题-不确定它是否适用于您的情况。不过,范围=单元格,例如
范围(单元格(2,3),单元格(10000,3))=单元格(1,3)
应该同样快。

此外,您可能会考虑使用类似
的表(1)。单元格(7,2)
而不是
表(“A”)。范围(“b7”)
作为“微速优化”的一部分。 BR>另一个要考虑的方面是尽可能多地使用数组(对于中间值),并且只对最终的输出写。
最后,值得一提的是,我们经常会忽略代码中降低运行时性能的某些方面。

工作表C有很多公式吗?@GowthamShiva是的。是的。我将表B中的值插入表A,然后将答案从表C复制到表B。对于单个值,它是在一瞬间完成的。但是,当我为多个值运行循环时。这需要时间。只需计算所需的单元格/范围,而不是计算整个表C。表格C中的b B1是否可以自动计算所有其他单元格,因为它们与此关联?如果您观察到改进的marco速度,那么请找出计算B1所需的所有单元格,并单独包含所有单元格?表格C是否有很多公式?@GowthamShiva是的。是的。我将表B中的值插入表A,然后将答案从表C复制到表B。对于单个值,它是在一瞬间完成的。但是,当我为多个值运行循环时。这需要时间。只需计算所需的单元格/范围,而不是计算整个表C。表格C中的B1是否可以自动计算所有其他单元格,因为它们与此链接?如果您观察到改进的marco速度,请找出计算B1所需的所有单元格,并分别包括所有单元格