Excel VBA:使用带有动态范围的.formula

时间:2016-05-18 19:33:12

标签: excel vba excel-vba

我正在尝试平均一些属于他们自己列的数据集。数据集的数量可能会发生变化,因此我平均需要的列数是动态的。

另外,我在每个工作表上都有多组数据集,并且因为数据集是动态的,所以我在代码的前面向工作表中添加了列,因此我无法对数据集的起点进行硬编码。换句话说,我不能只说...

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公式的范围?

2 个答案:

答案 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&“)”