拖动公式而不“拖动”

时间:2016-11-28 12:01:34

标签: excel vba optimization

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

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

我知道这会将相同的公式放入整个范围,我需要一个“拖动效果” - 所以它相对于每一行都有变化,但没有复制粘贴

P.S。我不想复制粘贴,因为它吃了更多的CPU,我想要一些东西

3 个答案:

答案 0 :(得分:2)

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

Range("A1:B10").FillDown

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

答案 1 :(得分:1)

一个小技巧!:

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

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

答案 2 :(得分:1)

对于单个单元格,您无需将公式显式转换为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特别低效。您是否通常优化了关闭屏幕更新,将计算设置为手动等等?