为什么重复VBA FormulaR1C1会使行参考偏移?

时间:2019-05-28 18:10:02

标签: vba excel-r1c1-notation

我已经看过几次了,通常可以解决这个问题,但是我有一些国际用户要求我找出一些不同的东西。

我有一行,其中每一列都包含多个唯一的公式。我希望在一系列数据中重复。从本质上讲,这与复制粘贴公式相同,但是我试图加快此过程,然后立即将公式设置为值。但是,当我执行使用FormulaR1C1设置范围的代码时,它仅适用于第一行。

以下是该问题的极为简化的说明:

Range(“ C1:H1”)的公式=$B1/8+每列的编号不同。我想在Range(“ C4:H12”)上复制此公式

使用此vba代码:

Range("C4:H12").FormulaR1C1 = Range("C1:H1").FormulaR1C1

适用于第一行(4),但是在第五行开始引用NEXT行(因此公式显示为= $ B6 / 8 +,并继续偏移。

我通常的解决方法是键入公式,然后将其保存在特定的位置,但是我与外国用户的问题是,我正在使用的复杂公式语法需要在单元格公式中设置。是的,我可以使用复制粘贴公式,但是我只是很好奇为什么会发生这种偏移。

您可以下载simple file her e(没有VBA)。

enter image description here

1 个答案:

答案 0 :(得分:0)

虽然我无法解释行为,但我可以提供以下解决方案:

分两步进行

  • 使用FormulaR1C1获取第一个目标行的正确公式
  • 然后使用Formula在目标范围内推广公式
Sub Demo()
    Range("C4:H4").FormulaR1C1 = Range("C1:H1").FormulaR1C1
    Range("C4:H12").Formula = Range("C4:H4").Formula
End Sub