自动计算过滤结果的平均值

我有一个电子表格,列P的分数在1-6之间

单元格O4具有以下公式:= AVERAGEIFS(P8:P5000,P8:P5000,“<> 6”,P8:P5000,“<> 0”)

该公式searchP列中不包括6,空白和0的平均分数

O栏的职员名字如John,Mark,Tim …….

我想要做的是单元格O4自动计算P列中显示的数字的平均值后,我已经使用filterfunction,只显示选定的工作人员的成果。

我希望excel可以自动做到这一点,但单元格O4似乎仍然显示整个列P的平均值,无论我是否已经过滤或不。

我在另一个论坛上给出了下面的公式,但它似乎给出了稍微错误的结果,尽pipe只有一小部分,但如果可能的话,我需要得到确切的结果。 任何帮助赞赏。

= SUMPRODUCT(1- ISNUMBER(MATCH(P8:P100,{0,6},0)),SUBTOTAL(9,OFFSET(P8,ROW(P8:P100)-ROW(P8),0,1)))/ SUMPRODUCT(1- ISNUMBER(MATCH(P8:P100,{0,6},0)),次全(2,OFFSET(P8,ROW(P8:P100)-ROW(P8),0,1)))

也许

{=AVERAGE(IF((P8:P5000<>6)*(P8:P5000<>0)*SUBTOTAL(103,INDIRECT("O"&ROW(8:5000))),P8:P5000))}

会做你想要的。 假设filter在列O上。

SUBTOTAL中的103也将排除行手动隐藏。 如果这不需要,它应该只排除隐藏的行,如果过滤,然后用3代替。

这是一个数组公式。 将其input到没有大括号的单元格中,然后按[Ctrl] + [Shift] + [Enter]创build数组公式。

我会在所有独特的工作人员的新表中创build一个单独的表,然后执行计算。 通过这种方式,只需扫描表格,即可快速比较所有员工的值,而不必不断更新filter,以查看潜在数十或数百名员工的值。 您可以将职员姓名范围和条件添加到您的AVERAGEIFS公式中。

举个例子:

 Sheet 2 AB --- --- 1 | Staff Average 2 | Bob =AVERAGEIFS(Sheet1!$P$8:$P$5000,Sheet1!$O$8:$O$5000,A2,Sheet1!$P$8:$P$5000,"<>6",Sheet1!$P$8:$P$5000,"<>0") 3 | Mary =AVERAGEIFS(Sheet1!$P$8:$P$5000,Sheet1!$O$8:$O$5000,A3,Sheet1!$P$8:$P$5000,"<>6",Sheet1!$P$8:$P$5000,"<>0") 4 | Joe =AVERAGEIFS(Sheet1!$P$8:$P$5000,Sheet1!$O$8:$O$5000,A4,Sheet1!$P$8:$P$5000,"<>6",Sheet1!$P$8:$P$5000,"<>0")