Excel中的Averageif和Offset函数可获得滚动平均值

时间:2015-02-03 18:53:24

标签: excel offset moving-average

我有一堆连续的行,我试图根据标准对最后的90行进行平均。平均值需要在单个单元格中,而不是计算运行平均值的列。我想出了如何计算最后90行的平均值,但是我无法在平均之前正确添加if函数以满足条件。

数据:

sale type (b)        Data(c)      Rownumber (E) 
a                     45             1
b                     35             2 
c                     36             3 
c                     56             93

以下是正常工作AVERAGE(OFFSET(E2,COUNTA(E:E)-1,-2,-90)).

的平均功能

以下是我尝试运行的AVERAGEIF函数,它提供的数据不正确:

=AVERAGEIF(B:B,I15,OFFSET(E2,COUNTA(E:E)-1,-2,-90))
在这种情况下,

I15单元格是我想要匹配的促销类型。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

=AVERAGEIF(OFFSET(B2,COUNTA(E:E)-2,0,-90),$I$15,OFFSET(C2,COUNTA(E:E)-2,0,-90))

首先:你需要" -2"而不是" -1"从你的行开始,你没有得到最后的90分-1(通过将数据中的记录改为" 999"在郊区测试它。你会看到它拿起来AVG发生巨大变化时的那个值。)

第二:你和范围必须匹配..高度无论如何。因此,在两者中使用相同的偏移公式。

要稍微优化一下,你可以计算出#34; COUNTA(E:E)-2"在另一列中,命名它,然后在两种情况下都引用它(这样Excel只计算一次,而不是两次)。 ;)

另外,如果I15单元格是单个单元格,那么您可能需要15美元才能安全。在这种情况下,我不认为这很重要,只是习惯于将单个隔离的单元格做到不属于某个范围:)

答案 1 :(得分:0)

如果你在E栏中确实有(数据的)行号,你可以使用AVERAGEIFS,只使用基于E栏的其他标准,如下所示:

=AVERAGEIFS(C:C,B:B,I15,E:E,">"&MAX(E:E)-90)