我的电子表格看起来像
我想仅平均前五个包含数据的单元格。我怎么能这样做?
随着列表获得更多数据,如下所示:
我希望能够定位一个单元格(如A10),并从那里回到5。同样,只有它中有数据。
所以图像的公式应该是这样的:(23 + 60 + 53 + 42 + 40)/ 5 = 43.6
它正在倒退并且跳过黑色空间,但仍然获得了之前的5个。
答案 0 :(得分:2)
以下公式假设您的值位于A列(如果不是,则调整所有A:A
引用):
=Average(Filter(Sort(A:A;If(A:A="";0;Row(A:A));false);Row(A:A)<6))
要理解上面的公式,请分别粘贴其部分(当您获得没有Filter
公式的部分时,您需要将其包装在ArrayFormula
上。例如
=Filter(Sort(A:A;If(A:A="";0;Row(A:A));false);Row(A:A)<6)
=ArrayFormula( Sort(A:A; If(A:A="";0;Row(A:A)); false) )
=ArrayFormula( Row(A:A) )
将这些“辅助”公式放在工作表上可能包含的空列上(在第一个单元格中,例如D1
,T1
)。
对于非整列,如您所建议的那样,您可能还需要将整个公式包装在数组公式中,例如
=ArrayFormula( Average(Filter(Sort(K1:K10;If(K1:K10="";0;Row(K1:K10));false);Row(K1:K10)<6)) )
我最初认为Filter
公式的行为与ArrayFormula
类似,但它似乎并非“递归”到其参数的内部。 Hance,ArrayFormula
需要IF
才能正常使用。我不知道它为什么适用于A:A
。