首页 文章

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

提问于
浏览
1

我有一个循环的代码,并计算一行日期的输入列的公式 . 它在VBA中循环和写入速度相当慢,所以我希望将公式粘贴到单元格而不是计算值 . 我的计划是为结果创建一个范围,并将范围设置为等于公式 .

但是我坚持使用这个公式 . 公式使用前面的答案加上其他数据,我不得不尝试为范围创建公式,以便参考单元格移动范围中的每个单元格 .

单元格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会成为一个解决方案吗?

2 回答

  • 1

    使用相对参考:

    .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是列相对于自我否定必须在[]

  • 1

    您也可以使用 A1 Notation 执行此操作 .

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

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

相关问题