在R1C1公式中使用变量

时间:2019-12-03 05:16:31

标签: excel vba excel-formula

此公式有效: ActiveCell.FormulaR1C1 = "=SUM(R[-14]C:R[-1]C)" 它返回=sum(c1:c14)

此公式无效: ActiveCell.FormulaR1C1 = "=SUM(R[-" & nrows & "]C:R[-1]C)" 它返回=SUM(C14:C1048576)

我有这句话

Dim nrows as Integer

为什么带有nrows变量的公式不起作用

2 个答案:

答案 0 :(得分:3)

您的“错误”结果是因为R1C1公式将“自动换行”,因此例如,如果您的活动单元格为A1并输入=R[-1]C,您将获得=A1048576(ColA中的最后一个单元格)作为结果。

类似地,A1中的=RC[-1]会给您=XFD1

答案 1 :(得分:1)

在实现R1C1样式公式时,应格外小心,除非有人使用Macro Recorder直接记录它们。

样式为:<Row><Number><Column><Number>

第一部分是参考类型。

绝对引用::在绝对引用的情况下,符号不包含方括号,并且所写的数字表示单元格在网格中的明确位置。 例如

R1C1表示$A$1,即第1行和第1列

R2C1表示$A$2

R1C2表示$B$1

使用绝对引用非常简单,因为可以很快地了解网格中单元的位置。

相对参考:如果是相对参考,则符号需要使用方括号。请参见下图,以清楚地了解偏移量表示法。

enter image description here

因此,如果您当前的单元格是B2,那么公式

=R[-1]C将引用B1

=RC[-1]将引用A2,依此类推,如图所示。

您的具体情况:

您可以使用

ActiveCell.FormulaR1C1 = "=SUM(R1C:R" & (nrows - 1) & "C)"

这基本上意味着,如果您的ActiveCellC16并且变量nrows16,那么您将获得以下公式,该公式对行使用绝对引用技术。

=SUM(C$1:C$15),即混合引用。

有关相对参考,您可以使用:

ActiveCell.FormulaR1C1 = "=SUM(R[" & -(nrows - 1) & "]C:R[-1]C)"将获得

=SUM(C1:C15),即相对引用

对于绝对引用,假设您希望在C列中使用,则将变为:

ActiveCell.FormulaR1C1 = "=SUM(R1C3:R" & (nrows - 1) & "C3)"将获得

=SUM($C$1:$C$15),即绝对引用

其他说明:

  • 符号=RC指ActiveCell本身。

  • 相对样式引用被包装,即A列中的=RC[-1]指向工作表中的最后一列,类似地,第一行中的=R[-1]C则指向工作表中的最后一行。