Excel VBA AVERAGE(可变范围)

时间:2017-07-31 07:57:09

标签: excel vba excel-vba

我正在尝试使用Excel公式来平均过去12个月的值,并将其与当前月份值(在这种情况下为RC[-2]-RC[-1]和30%的差异)进行比较。

问题是行更改,它嵌套在循环中。

代码下方:

Dim i As Long 
Dim o As Double 
Dim p As Double

'some code here

For i = 1 To n
    Selection.Value = "=RC[-2]-RC[-1]"
    o = ActiveCell.Value
    p = Application.Formula.Average(Range("RC[-13]", "RC[-2]"))
    If (o >= (p + p * 3 / 10)) Or (o < (p + p * 3 / 10)) Then
        ActiveCell.Font.Color = vbRed
    End If
    ActiveCell.Offset(1, 0).Select
Next i

关于如何在没有单独的平均函数的情况下定义平均值的任何想法?

2 个答案:

答案 0 :(得分:1)

Selection.Value = "=RC[-2]-RC[-1]"更改为Selection.Value = Offset(0, -2).Value - Offset(0, -1).Value

然后,声明一些范围变量:Dim rng As Range,然后使用过去12个月的数据将其设置为范围并计算平均值:

Set rng = Range(Selection.Offset(0, -13), Selection.Offset(0, -2))
p = Application.Average(rng)

答案 1 :(得分:0)

找到ActiveCell.Offset(0, 1).Value = "=AVERAGE(RC[-13]:RC[-2])"的解决方法。

感谢您的时间!