参考VBA Excel中公式内的一系列单元格

时间:2013-08-28 10:25:33

标签: excel vba excel-vba excel-formula

我正在尝试使用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)])"

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

2 个答案:

答案 0 :(得分:2)

基本上

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

答案 1 :(得分:1)

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