我试图找到连续7个最近的条目的平均值,如图所示 this 电子表格。
我发现了一些类似于我的问题,但我对这些答案的工作方式仍感到困惑。类似于我的问题可以在我的电子表格的左侧找到。
我认为这些公式对我有用,只需要对一些值进行简单的调整,但我似乎无法弄明白。如果有人能够解释现有的答案之一或想出另一个有效的答案,我将非常感激。
电子表格每天都会更新,因此随着越来越多的数据添加到列中,我需要一些可以继续工作的东西。
答案 0 :(得分:2)
尝试:
=round(AVERAGE(OFFSET(H1,MAX(ARRAYFORMULA(ROW(H:H)*--(H:H<>"")))-7,,7)))
<强>解释强>
我们得到的是最后一个非空行:MAX(ARRAYFORMULA(ROW(H:H)*--(H:H<>"")))
然后使用offset
公式,我们得到一列中最后7个单元格的范围。
然后只使用AVERAGE
。
更多信息
您可以在此处找到有关查找最后一个非空行的更多信息: Selecting the last value of a column
答案 1 :(得分:2)
另一种方法是使用INDEX和MATCH。第一个匹配找到范围中最后一个数字的位置,并从中获取6个:第二个匹配找到范围中最后一个数字的位置。通过INDEX函数传递它可以提供一个参考,您可以使用它来为AVERAGE提供一系列7个单元格。
=average(index(H:H,match(999,H:H)-6):index(H:H,match(999,H:H)))
所以我的答案就像你的Link2
这里的一大障碍是,如果你有一个范围内的文本单元格(例如&#34; Nothing&#34;),要弄清楚从哪个单元格开始获得平均7个单元格要困难得多。我想我知道如何使用OFFSET在Excel中执行此操作,但偏移似乎在Google表格中的工作方式相同。
但是我可以看到你的Link3中有一个解决方案,如果你将A:A改为H:H并将SUM改为AVERAGE,这对你有用。我已经测试了最后十个单元格的平均值,其中包括一个&#34; Nothing&#34;细胞:
=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"))