Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel中的Averageif和Offset函数以获得滚动平均值_Excel_Offset_Moving Average - Fatal编程技术网

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

Excel中的Averageif和Offset函数以获得滚动平均值,excel,offset,moving-average,Excel,Offset,Moving Average,我有一大堆连续的行,我试图根据一个标准来平均最后90行。平均值需要在单个单元格中,而不是计算运行平均值的列中。我知道了如何计算最后90行的平均值,但我无法在平均值之前正确添加if函数以满足标准 数据: 下面是正常工作的平均值函数average(偏移量(E2,COUNTA(E:E)-1,-2,-90))。 下面是我试图运行的AVERAGEIF函数,该函数提供了不正确的数据: =AVERAGEIF(B:B,I15,OFFSET(E2,COUNTA(E:E)-1,-2,-90)) I15cell在本

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

数据:

下面是正常工作的平均值函数
average(偏移量(E2,COUNTA(E:E)-1,-2,-90))。

下面是我试图运行的
AVERAGEIF
函数,该函数提供了不正确的数据:

=AVERAGEIF(B:B,I15,OFFSET(E2,COUNTA(E:E)-1,-2,-90))
I15
cell在本例中,是我试图匹配的销售类型

提前感谢您的帮助

=AVERAGEIF(OFFSET(B2,COUNTA(E:E)-2,0,-90),$I$15,OFFSET(C2,COUNTA(E:E)-2,0,-90))
第一:你需要从你的行中选择“-2”,而不是“-1”,你不能用-1获得最后的90分。。(通过在郊区将数据中的记录更改为“999”来测试它。当平均值发生显著变化时,您将看到它拾取该值。)

第二:你的目标和范围必须匹配。。反正是高度。因此,在这两种情况下使用相同的偏移公式

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


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

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


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

在您的示例中,销售类型是字符串的数据类型,平均值是数字的数据类型,进行这种逻辑测试是不符合逻辑的。我想根据销售类型平均C列(数据)。感谢您的帮助!恐怕我不清楚这个问题。您提供的公式似乎可以计算任何小于90的行数的平均值。但是,我只需要返回90行的平均值。例如,如果在第95行之后输入第1行,则计算中不应包括第1行,因为公式应告诉它返回第5行(95-90)。目前,如果我这样做,公式仍然使用第#1.ahh行计算结果,我明白了。。看看巴里的回答然后。。。那可能是你想要的。
=AVERAGEIF(OFFSET(B2,COUNTA(E:E)-2,0,-90),$I$15,OFFSET(C2,COUNTA(E:E)-2,0,-90))