2016-11-24 106 views
2

我试图找到连续7个最近条目的平均值,如 this 电子表格中所示。如何查找Google表格中某列中最后7个值的平均值?

我发现了几个类似于我的问题,但对于答案的工作方式我还是很困惑。类似于我的问题可以在我的电子表格的左侧找到。

我认为这些公式对我来说可以用几个简单的调整来使用哪些值,但我似乎无法弄清楚。如果有人能解释一个现有的答案或想出另一个可行的答案,我将不胜感激。

电子表格每天更新,所以我需要一些东西,随着越来越多的数据添加到列中,这些东西会继续工作。

回答

1

尝试:

=round(AVERAGE(OFFSET(H1,MAX(ARRAYFORMULA(ROW(H:H)*--(H:H<>"")))-7,,7))) 

这里的working sample

说明

我们所得到的最后一个非空行:MAX(ARRAYFORMULA(ROW(H:H)*--(H:H<>"")))

然后用offset公式我们得到的范围一列中的最后7个单元格。

然后只使用AVERAGE

更多信息

您可能会发现更多关于这里找到最后一个非空行: Selecting the last value of a column

+0

这绝对作品,但我真的不知道怎么样。数组公式函数是什么,使用<>和 - ? – beninato

1

另一种方法是使用INDEX和MATCH。第一场比赛找到最后一个数字在该范围内的位置,并且距离该数字为6:第二场比赛找到该范围中最后一个数字的位置。通过INDEX函数传递给你一个参考,你可以使用它给出一个7个单元格供AVERAGE使用。

=average(index(H:H,match(999,H:H)-6):index(H:H,match(999,H:H))) 

所以我的答案是像你Link2

最大的障碍在这里,如果你有范围内的文本单元(如“无”),这是更为困难的工作,开始其细胞从而获得平均7个细胞。我想我知道如何使用OFFSET在Excel中执行此操作,但在Google表格中,抵消似乎不能以相同的方式工作。

但是我可以看到在您的Link3中有一个解决方案,如果您将A:A更改为H:H并将SUM更改为AVERAGE,则该解决方案应该适用于您。我测试的平均值在过去10个单元,其中包括一个“无”小区:

=ArrayFormula(AVERAGE(QUERY(SORT(H:H,ROW(H:H)*ISNUMBER(H:H),0),"select * limit 10"))) 

,并让正确的答案61.8。

方法数组公式的工作原理是,不是将单个值传递给函数,而是传递整个范围或数组(值列表),并且函数逐个处理它们。上面的公式采用整列H:H并按降序对行号进行排序,但那些不包含数字的单元在乘法中给出零并排序到底部。然后查询将顶部(在我的情况下)10个单元格传递给AVERAGE。

BTW,这并不必须声明为数组公式:这也适用

=AVERAGE(QUERY(SORT(H:H,ROW(H:H)*ISNUMBER(H:H),0),"select * limit 10")) 
+0

感谢您的回应;不过,我可能会用Max的答案。我看到你也使用了数组公式函数,你能解释它的作用吗? – beninato

+0

A将为我的答案添加第二个公式的解释(第一个公式不是数组公式) –

相关问题