我正在尝试使用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)])"
但是我收到错误:“应用程序定义或对象定义错误”
答案 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]”,无论行如何。