0

我正在尝试使用 VBA 来计算一些字段。当我录制宏时,我得到了这个:

ActiveCell.FormulaR1C1 = "=AVERAGEIF(R4C[-27]:R4C[-6],2012,RC[-27]:RC[-6])"

问题是公式的范围可以改变。

我有一个整数变量NumOfMon,它从工作表的第一列计算公式所需的列。然而,上面的公式使用偏移量来确定所需的范围,但因为我的范围可以改变,我需要使用 NumOfMon 才能仅使用所需的单元格。如何更改公式以便正确使用它?

我尝试使用这样的变量:

a = 28
NumofMon = 21
 ActiveCell.FormulaR1C1 = "=AVERAGEIF(R4C[-(a-1)]:R4C[-(a-NumOfMon-1)],2012,RC[-(a-1)]:RC[-(a-NumOfMon-1)])"

但我收到一个错误:“应用程序定义或对象定义错误”

4

2 回答 2

2

基本上

ActiveCell.FormulaR1C1 = "=AVERAGEIF(R4C[-" & (a-1) & "]:R4C[-" & (a-NumOfMon-1) & "],2012,RC[-" & (a-1) & "]:RC[-" & (a-NumOfMon-1) & "])"
于 2013-08-28T12:21:56.910 回答
1

如果可能,请将您的数据转换为表格。这样,您可以参考动态数据(大小变化)而不会遇到问题。例如,要在名为“Table1”的表中引用名为“Item”的列 A,无论行如何,您的引用都将是 '=Table1[Item]'。

于 2013-08-28T12:18:34.680 回答