Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 循环使用动态公式填充的范围_Vba_Excel_Loops_Range_Formula - Fatal编程技术网

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

Vba 循环使用动态公式填充的范围,vba,excel,loops,range,formula,Vba,Excel,Loops,Range,Formula,有人对如何加速这一循环有什么建议吗?我们的文件有9000多行,宏占用的时间太长。在这个范围内,它是否会在每次循环时返回到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,

有人对如何加速这一循环有什么建议吗?我们的文件有9000多行,宏占用的时间太长。在这个范围内,它是否会在每次循环时返回到
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))"

谢谢

一起摆脱循环:

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行的所有CEL,无需循环

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

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


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

一起清除循环:

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行的所有CEL,无需循环

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

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


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

不是它将加速代码,而是您的行
lrow=1
是100%冗余的。不是它将加速代码,而是您的行
lrow=1
是100%冗余的。