拖动公式而不拖动

我连续有几个公式,我想把它们拖下来。 公式是复杂的,我没有他们在R1C1格式,我不想将它们转换成R1C1,但我想做的事情是这样的:

Range(A2:B10).Formula = Range.(A1:B1).Formula

我知道这样会把同一个公式放到整个范围内,我需要一个“拖动效果” – 所以它相对于每一行都有变化,但是没有粘贴

PS我不想复制粘贴,因为它吃更多的CPU,我想有东西

定义要用公式填充的范围,并使用Range.FillDown

 Range("A1:B10").FillDown 

注意:范围的第一行必须包含原始公式

一个小窍门!

 Sub KopyFormulas() Range("A1:B1").Copy Range("A2:B10") End Sub 

将向下复制公式,并调整它们!

对于单个单元格,您不需要显式地将公式转换为R1C1格式以使用FormulaR1C1

即使您正在使用标准的A1引用风格,仍然可以使用

 Range("B2:B10").FormulaR1C1 = Range("B1").FormulaR1C1 

这会影响到复制B1的公式。 它不会更改默认格式 – 它们仍将以A1格式显示。

用两个或两个以上的单元块做这个似乎确实有问题。 你可以一栏一列(如果需要,在循环中):

 Range("A2:A10").FormulaR1C1 = Range("A1").FormulaR1C1 Range("B2:B10").FormulaR1C1 = Range("B1").FormulaR1C1 

这是否值得这个麻烦(与简单的.FillDown相比)是另外一个问题。 你可以计时。

顺便说一句 – 我不会这么想.FillDown特别低效。 你有没有做closures屏幕更新,设置计算手动等通常的优化?