R1C1公式结果给出给定变量的两倍

时间:2019-07-10 07:00:45

标签: excel vba excel-formula excel-r1c1-notation

我想归一化一些数据,并希望该归一化的数据在数据更改时动态更改,这就是为什么我想将公式放在引用不同单元格的单元格中。但这与问题并没有真正的关系,因为即使最简单的公式(如下所示)也不起作用。

Public Sub Test()
    a = 15
    Cells(a, 8).FormulaR1C1Local = "=Z(" & a & ")S7"
End Sub

单元格(15,8)中的公式为=$G30
我期望得到以下输出:=$G15

在许多论坛上,人们问如何将变量放入R1C1Formula中,答案是:[" & a & "],但这会导致运行时错误1004,因此我尝试使用()来代替不会给我任何警告,但结果却不是我期望的。

1 个答案:

答案 0 :(得分:1)

您需要根据相对引用和绝对引用来了解R1C1规则。

R15C7是绝对的:第15行和第7列= $G$15

R[15]C7是相对行,表示:公式所在的行加上15行和第7列。如果公式位于第15行,则= $G30

RC7的意思是:公式所在的行以及第7列。如果公式位于第15行,则= $G15

Public Sub Test()
 a = 15
 Cells(a, 8).FormulaR1C1 = "=R[" & a & "]C7" '$G30
 Cells(a, 8).FormulaR1C1 = "=R" & a & "C7"   '$G$15
 Cells(a, 8).FormulaR1C1 = "=RC7"            '$G15
End Sub

已翻译为您的区域Zeile / Spalte Z1S1

Public Sub Test()
 a = 15
 Cells(a, 8).FormulaR1C1Local = "=Z(" & a & ")S7" '$G30
 Cells(a, 8).FormulaR1C1Local = "=Z" & a & "S7"   '$G$15
 Cells(a, 8).FormulaR1C1Local = "=ZS7"            '$G15
End Sub