[英]Excel VBA: Using .formula with dynamic ranges
我正在尝试平均一些属于他们自己列的数据集。 数据集的数量可能会发生变化,因此我平均需要的列数是动态的。
另外,我在每个工作表上都有多组数据集,并且因为数据集是动态的,所以我在代码的前面向工作表中添加了列,因此我无法对数据集的起点进行硬编码。 换句话说,我不能只说...
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公式的范围?
它正在寻找地址,并且范围对象的默认值是:
Range("F5").Formula = "=Average(" & c.Address(0,0) & ")"
如果要平均的范围是工作表上的唯一数据,则可以找到“最后一行”和“最后一列”,然后在公式中使用这些变量。
要查找最后一行:
LastRow = Cells.Find("*", Range("A1"), xlFormulas, xlPart, _
xlByRows, xlPrevious, False, False).Row
要查找最后一栏信:
LastCol = Split(Cells(1, ActiveSheet.Cells.Find(What:="*", _
SearchDirection:=xlPrevious, _
SearchOrder:=xlByColumns).Column).Address, "$")(1)
公式将改为:
"=AVERAGE(H5:K5)"
至:
"=AVERAGE(H5:" & LastCol & Last Row & ")"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.