对于8个最近得分,Excel中的条件平均值> 0

时间:2016-06-17 13:26:04

标签: excel excel-formula

我有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  

感谢您的帮助!

2 个答案:

答案 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会将{}放在公式周围。

enter image description here

我们可以使用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的上述条件。