【问题标题】:Excel VBA AVERAGE(variable range)Excel VBA AVERAGE(可变范围)
【发布时间】:2017-07-31 19:15:24
【问题描述】:

我正在尝试使用一个 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

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

【问题讨论】:

  • 你能显示剩下的代码吗,这里的用户更愿意给出答案而不使用SelectionActiveCellSelect
  • 感谢您的快速回复!真的没有任何其余的代码。我想要实现的是比较 2 个值,一个被设置为前 2 个列值之间的差异,另一个是同一行的最后 12 个列值。
  • 那么你能告诉我们开头的ActiveCell是哪个Cell吗?
  • 活动单元格是选择或更具体的RC[-2]-RC[-1]
  • RC[-2]-RC[-1] 不是单元格,除非您知道原点是什么。你能展示你的工作表样本吗?

标签: vba excel


【解决方案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)

【讨论】:

  • 这是我试图在逻辑上实现的选择范围,但它不起作用。
  • 您必须确保在运行此代码时选择了正确的单元格。例如,当您选择单元格 A1 并尝试运行它时,您可以偏移 -13 列,因为您最终会出现在第 -12 列......这是一个错误。尝试在您的代码中包含一些更智能的方法来引用您想要的单元格。使用ActiveCellSelection 经常会导致错误。
【解决方案2】:

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

感谢你们的时间!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    相关资源
    最近更新 更多