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

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

数据:

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

这里是正常工作的平均functionAVERAGE(OFFSET(E2,COUNTA(E:E)-1,-2,-90)).

这里是AVERAGEIF函数,我试图运行,提供不正确的数据:

 =AVERAGEIF(B:B,I15,OFFSET(E2,COUNTA(E:E)-1,-2,-90)) 

在这种情况下, I15电池是我想要匹配的销售types。

先谢谢您的帮助!

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

首先:你需要“-2”,而不是“-1”,你没有得到最后90与-1 ..(testing通过改变数据logging到“999”在郊外。当AVG发生巨大变化时,会看到它的价值。)

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

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

此外,如果I15单元格是单个单元格,则可能需要$ I $ 15以确保安全。 在这种情况下,我不认为这很重要,只是习惯于这样做,而不是一个范围的单独的单元格:)

如果你实际上在E列中有行数(的数据),你可以使用AVERAGEIFS并使用另一个基于列E的标准,如下所示:

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