有没有人建议如何加快这个循环?我们的文件有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))"
谢谢
答案 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
次。这就是降低代码速度的原因。
任何相对引用(行号前没有$
)将自动更新到相对行。