简单形式的循环公式,需要很长时间

时间:2019-08-17 13:47:29

标签: excel vba

请帮助。我通过VBA使用以下公式进行了计算。 也许我的重复令人困惑:(

For i = 1 To 200
Cells(i + 10, 5) = Application.WorksheetFunction.CountA(sheets("PETA").range("D" & i + 1 & ":I" & i + 1)) 'T1.s1
Cells(i + 10, 6) = Application.WorksheetFunction.CountA(sheets("PETA").range("J" & i + 1 & ":O" & i + 1)) 'T1.s2
Cells(i + 10, 7) = Application.WorksheetFunction.CountA(sheets("PETA").range("P" & i + 1 & ":U" & i + 1)) 'T1.s3

....至.... Cells(i + 10, 105)

事实证明,运行时此公式需要很长时间。有没有像我上面制作的公式那样简单的重复公式?在少于50个单元的情况下,所有这些都看起来不错,但是之后,CPU容量开始被使用

2 个答案:

答案 0 :(得分:0)

这些速度下降通常是由于每条更改电子表格的语句之后电子表格重新计算引起的(您希望在该循环中有600条)。

就放在For i行之前

Application.Calculation = xlManual

关闭自动计算。

所有复制完成后,添加:

Application.Calculation = xlAutomatic

将其重新打开。

答案 1 :(得分:0)

写入大量单元,一次写入一个单元,效率很低。相反,首先创建一个临时数组,然后将结果写入该数组。然后,将数组的内容一次全部传输到您的工作表中。

Video