使用参考单元通过VBA在一系列单元格中插入一个公式

我有一个循环的代码,并计算一行date的input列的公式。 这是相当慢的循环和VBA写作,所以我希望将公式粘贴在单元格,而不是计算值。 我的计划是为结果创build一个范围,并设置范围等于公式。

但是我坚持公式。 该公式使用以前的答案加上其他数据,我试图创build该范围的公式,所以参考单元格移动的范围中的每个单元格。

公式对于单元格N7将如下所示

=IF(M7<>0,(M7-$D7)^(1/30.4),$B7*(1-$C7)^(1/$E7)) 

复制到单元格O7时,公式将如下所示

  =IF(N7<>0,(N7-$D7)^(1/30.4),$B7*(1-$C7)^(1/$E7)) 

对于O8,看起来像这样

  =IF(N8<>0,(N8-$D8)^(1/30.4),$B8*(1-$C8)^(1/$E8)) 

我理解如何遍历每个单元格并写出公式,但我不认为这比计算它然后写出答案快得多。 我希望有一种方法来设置范围等于一个公式,将填充正确的单元格引用。

ActiveCell.Offset会成为一个解决scheme吗?

使用相对引用:

 .FormulaR1C1 = "=IF(RC[-1]<>0,(RC[-1]-RC4)^(1/30.4),RC2*(1-RC3)^(1/RC5))" 

如果你需要,你可以在一个范围内使用它来填充,而不是像这样循环:

 Range("N7:P20").FormulaR1C1 = "=IF(RC[-1]<>0,(RC[-1]-RC4)^(1/30.4),RC2*(1-RC3)^(1/RC5))" 

R是行而C是相对于自身负面的列必须在[]中

您也可以使用A1 Notation来做到这一点。

 Range("N7:O8").Formula = "=IF(M7<>0,(M7-$D7)^(1/30.4),$B7*(1-$C7)^(1/$E7))" 

使用R1C1 Notation有一些优点,但是对于这个,最好使用这个,更容易阅读。 HTH。