vba中的相对参考小计公式

Posted

技术标签:

【中文标题】vba中的相对参考小计公式【英文标题】:Relative reference subtotal formula in vba 【发布时间】:2014-06-05 20:03:28 【问题描述】:

我正在尝试制作一个每隔几列都有小计的表格。我的 vba 代码将另一张工作表中的数据带入并将其分类为多个部分,现在我正在尝试编写代码以放入小计公式。这就是我所拥有的:

Sub Macro21()
Dim FI(1 To 3) As Variant
FI(1) = "Fixed Income"
FI(2) = 10
FI(3) = 21

Sheets("Sheet1").Cells(FI(2), 3).FormulaR1C1 = "=SUBTOTAL(9,R[1]C:R[FI(3)-FI(2)]C)"

End Sub

FI(2) 和 FI(3) 是本节的开始行和结束行。我在宏的其他部分使用它们,它们会随着新项目被放在一个类别下而更新。

当我运行它时,它给了我一个错误。有任何想法吗?

【问题讨论】:

【参考方案1】:

我认为您需要将公式构建为字符串,而不是使其引用您的Variant 数组。怎么样:

Sheets("Sheet1").Cells(FI(2), 3).FormulaR1C1 = _
     "=SUBTOTAL(9,R[1]C:R[" _
   & CStr(FI(3)-FI(2)) _
   & "]C)"

这假设结果字符串是您想要计算的...

【讨论】:

你的逻辑是有道理的,但它仍然给我一个错误。在旁注中,如何正确使用 _? 1) 什么错误? 2) _ 作为代码行的最后一个字符(前面有一个空格)允许在下一行代码中继续当前语句。 这很好。错误说下标超出范围。抱歉,我离开了一会儿。 是不是计算公式的那一行出错了?如果是,您是否真的有一张名为 "Sheet1" 的工作表(最容易测试的是在即时窗口中使用 ?Sheets("Sheet1").Name)。 这就是问题所在。我的工作表名称错误。你太棒了。

以上是关于vba中的相对参考小计公式的主要内容,如果未能解决你的问题,请参考以下文章

当我使用相对范围时,VBA会自动将我的范围转换为绝对值

循环 VBA 宏以打开文件夹中的文件,导入行,然后使用相对路径移动到另一个文件夹

相对危险度

Excel中公式的绝对引用和相对引用单元格

excel中的单元格引用有哪几种方式?

INDEX中的相对引用在插入行后不移位