运行慢速公式宏

时间:2014-01-24 16:27:14

标签: excel performance vba excel-vba

我的宏使用了一个不错但不是过多的数据((< 1000行,5-10列)。看起来放慢宏的是两个额外的列,公式引用数据,特别是这段代码..

lastrow = cells(rows.count,7).end(xlup).row
for i = 5 to lastrow
cells(i,8).formular1c1 = "=100*ln(rc[-1]/r[-1])"
next i
for i = 22 to lastrow
cells(i,9).formuar1c1 = "=stdev(r[-20]c[-1]:rc[-1])*(251)^.5"
next i

我发现带有这个部分的宏会带来excel的重复滞后问题。这里有人知道解决这个问题吗?或者提供一些加速宏的提示?

2 个答案:

答案 0 :(得分:0)

尝试创建一些可以提高执行速度的代码逻辑。公式有时可以使执行处于折腾状态。

答案 1 :(得分:0)

您不需要使用循环。只需将公式应用于整个范围:

lastrow = Cells(Rows.Count, 7).End(xlUp).Row

Range("H5:H" & lastrow).FormulaR1C1 = "=100*ln(rc[-1]/r[-1])"
Range("I22:I" & lastrow).FormulaR1C1 = "=stdev(r[-20]c[-1]:rc[-1])*(251)^.5"

最好添加一点lastrow

lastrow = Cells(Rows.Count, 7).End(xlUp).Row

If lastrow >= 5 Then Range("H5:H" & lastrow).FormulaR1C1 = "=100*ln(rc[-1]/r[-1])"
If lastrow >= 22 Then Range("I22:I" & lastrow).FormulaR1C1 = "=stdev(r[-20]c[-1]:rc[-1])*(251)^.5"