我连续几个公式,我想把它们拖下来。公式是复杂的,我没有R1C1格式,我不想将它们转换为R1C1,但我想做类似的事情:
Range(A2:B10).Formula = Range.(A1:B1).Formula
我知道这会将相同的公式放入整个范围,我需要一个“拖动效果” - 所以它相对于每一行都有变化,但没有复制粘贴。
P.S。我不想复制粘贴,因为它吃了更多的CPU,我想要一些东西
答案 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
特别低效。您是否通常优化了关闭屏幕更新,将计算设置为手动等等?