循环使用动态公式填充的范围

时间:2018-01-24 21:57:35

标签: vba excel-vba loops range formula

有没有人建议如何加快这个循环?我们的文件有9,000多行,宏需要太长时间。在该范围内,每次循环时它都会回到G1并且您是否建议如何在保持公式动态的同时更有效地编写范围?

Dim lrow As Long
lrow = 1
For lrow = 1 To lastrow3
   Range("g1:g" & lrow).Formula = "=IF(A1=""SC"",(IF(LEN(E1)=3,""SC"",IF(LEN(E1)=4,LEFT(E1,1),LEFT(E1,2)))),""LB"")"
   Range("h1:h" & lrow).Formula = "=IF(D1="" "",RIGHT(E1,3),CONCATENATE(RIGHT(E1,3),F1))"

谢谢

1 个答案:

答案 0 :(得分:2)

一起摆脱循环:

Dim lrow as long
lrow = 100
Range("g1:g" & lrow).Formula = "=IF(A1=""SC"",(IF(LEN(E1)=3,""SC"",IF(LEN(E1)=4,LEFT(E1,1),LEFT(E1,2)))),""LB"")"
Range("h1:h" & lrow).Formula = "=IF(D1="" "",RIGHT(E1,3),CONCATENATE(RIGHT(E1,3),F1))"

这将在一步中填充第1行到第100行的所有cels,无需循环。

通过使用循环,您可以使用公式填充不断增加的范围。第一个循环执行第1行,第二个循环执行第1行到第2行,依此类推。

第1行填充lrow次。这就是降低代码速度的原因。

任何相对引用(行号前没有$)将自动更新到相对行。