如何对空单元格使用 Averageifs

How to use Averageifs with empty cells

我有一个电子表格,其中 A 列中有姓名列表,然后在 B 到 Z 列中有一个介于 0 和 5 之间的数字。我想根据我 select.

Name     Col 1     Col 2
Bob       4         2
John      3         5
Zed                 5

这是我尝试过的:

如果名字是 Bob

,下面的结果是 3
=AVERAGEIF(A2:A4, "Bob", B2:D4)

但是,如果我将名称更改为 Zed,则无法除以 0,因为第 1 列未填写。我希望它只在其中有数字时才算数。我想也许在列中放一个 -1 并有多个条件,这样如果它 > -1 就可以计算,但我似乎无法使公式起作用。这是我尝试过的:

这很好用:

=AVERAGEIFS( B2:D4, B2:D4, ">-1")

但是当我尝试与名称结合时,我总是得到同样的错误,所以我尝试隔离它,但我仍然得到同样的错误。

=AVERAGEIFS( B2:D4, A2:A4, "=Bob")

以上产生以下错误:

array arguments to averageifs are of different size

我不太明白我做错了什么。

也尝试过使用过滤器,也不太幸运:

=AVERAGEIF(A3:A43, "Bob", FILTER(B2:D4, NOT(ISBLANK(B2:B4))))

您可以将 ARRAYFORMULA/IFAVERAGE:

一起使用
=arrayformula(average(if((E1=A2:A4)*(B2:C4>0),B2:C4,"")))

您也可以使用查询

=IFERROR(AVERAGE(QUERY(A22:C,"where A='"&D21&"'")))

(请根据您的需要调整范围)

使用的函数:

另一种方法。这将生成所有名称和平均值的报告:

=ArrayFormula({FILTER(A2:A,A2:A<>""),MMULT(FILTER(IF(B2:Z>0,B2:Z,0),A2:A<>""),SEQUENCE(COLUMNS(B:Z),1,1,0))/MMULT(FILTER(IF(B2:Z>1,1,0),A2:A<>""),SEQUENCE(COLUMNS(B:Z),1,1,0))})

一定要将它放在 A:Z 范围之外,否则会出现循环依赖错误。如果您将其移至不同的 sheet,请务必在所有范围之前加上源名称 sheet。

如果我只是 hard-coded 的列数 B:Z(即 25)等,这可能会更短。相反,它被写成易于编辑,例如,您将范围更改为 B:AA,等等