我有15分或更多,我想平均最近8分(基于日期)大于零。这是一个例子:
6/4/15,
6/18/15, 50
7/9/15, 46
7/16/15, 41
7/23/15, 47
7/30/15, 47
8/6/15,
8/13/15, 46
8/20/15, 49
8/27/15, 44
9/3/15,
5/5/16, 58
5/12/16, 53
5/19/16, 44
5/26/16, 42
感谢您的帮助!
答案 0 :(得分:0)
作为免责声明,我没有任何屏幕截图或实际公式,但您没有向我们展示过。
首先,按分数( ALT + D + S )按降序顺序对数据进行排序。这将把所有零条目放在底部。您现在可以忽略它们,因为您不希望它们成为您的平均值的一部分。
接下来,按降序顺序 date 对得分大于零的数据(即不出现在最底部)进行排序( ALT + D + S 。
然后使用AVERAGE()
函数获取此排序后前8行的平均值。
答案 1 :(得分:0)
您可以使用此数组公式:
=AVERAGE(IF(($A$1:$A$15>=LARGE(IF($B$1:$B$15<>"",$A$1:$A$15),8))*($B$1:$B$15<>""),$B$1:$B$15))
作为数组公式,需要在退出编辑模式时使用Ctrl-Shift-Enter而不是Enter输入。如果操作正确,那么Excel会将{}
放在公式周围。
我们可以使用INDEX($B:$B,MATCH(1E+99,$A:$A))
设置数据集中的最后一行,使公式更具动态性。
数组公式以指数方式计算,因此我们希望将引用的大小限制为数据集的实际大小。
该公式的作用是找到A列中具有数字/日期的最后一个单元格,并将该行用作最后一行。
所以把它们放在一起:
=AVERAGE(IF(($A$1:INDEX($A:$A,MATCH(1E+99,$A:$A))>=LARGE(IF($B$1:INDEX($B:$B,MATCH(1E+99,$A:$A))<>"",$A$1:INDEX($A:$A,MATCH(1E+99,$A:$A))),8))*($B$1:INDEX($B:$B,MATCH(1E+99,$A:$A))<>""),$B$1:INDEX($B:$B,MATCH(1E+99,$A:$A))))
它仍然是一个数组公式,因此仍然需要使用Ctrl-Shift-Enter的上述条件。