我正在自动化一个巨大的表,我需要为工作簿写一个新的宏,它将在几个表中插入行,然后复制所有的公式。我使用了pastspecial = xlpasteformulas,但这会导致宏运行有点滞后,即使将计算设置为自动。
我知道有一种方法可以让每个单元格都像这样
。公式= cellaboveit.formula
但那是在复制完全相同的公式。我想知道是否有一种方法可以在单元格上方的单元格中抵消公式。
Range("C4:D4").Resize(5).FillDown
将填充C4:D4中的公式以填充接下来的四行
我认为在复制公式之前将计算模式设置为手动,然后将其重置为自动将是最好的。在automatic中,它经常希望在每次拷贝时计算公式。
Application.Calculation = xlCalculationManual
'Do stuff here
Application.Calculation = xlCalculationAutomatic
此外,我建议如果您只是沿着列复制单元格公式,那么不是逐个单元格复制,而是批量复制,例如
Range(myCopyCell).Select
Selection.Copy
Range(myPasteRange).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
,其中myCopyCell
是要复制公式的单元格,myPastRange
是要复制公式的整个范围。