我正在尝试平均一些属于他们自己列的数据集。数据集的数量可能会发生变化,因此我平均需要的列数是动态的。
另外,我在每个工作表上都有多组数据集,并且因为数据集是动态的,所以我在代码的前面向工作表中添加了列,因此我无法对数据集的起点进行硬编码。换句话说,我不能只说...
Range("L5").formula = "=AVERAGE(H5:K5)"
...因为我无法确定数据集是从H5开始的。它可能从F5或G5等开始。
所以我尝试将起点作为As Range变量中的参数传递,但我不知道如何将它与.formula接口。
以下代码不起作用。我猜是因为我不能将范围变量放在这样的字符串中。
Sub Average()
Dim c As Range
Set c = Range("B5:B10")
Range("F5").FormulaR1C1 = "=Average(" & c & ")"
有没有办法像这样使用excel公式的范围?
答案 0 :(得分:2)
正在寻找地址,范围对象的默认值是值:
Range("F5").Formula = "=Average(" & c.Address(0,0) & ")"
答案 1 :(得分:0)
如果要平均的范围是工作表上的唯一数据,您可以找到“最后一行”和“最后一列”,然后在公式中使用这些变量。
要查找最后一行: LastRow = Cells.Find(“*”,Range(“A1”),xlFormulas,xlPart,_ xlByRows,xlPrevious,False,False)。行
查找最后一栏的字母: LastCol = Split(Cells(1,ActiveSheet.Cells.Find(What:=“*”,_ SearchDirection:= xlPrevious,_ SearchOrder:= xlByColumns).Column).Address,“$”)(1)
公式将改为: 的 “= AVERAGE(H5:K5)”强> 至: “= AVERAGE(H5:”& LastCol& Last Row&“)”