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

时间:2015-03-15 08:57:43

标签: excel excel-formula

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

细胞O4具有下式:= AVERAGEIFS(P8:P5000,P8:P5000,"<>",P8:P5000,"<>&#0&#34 ;)

此公式搜索P列中的分数的平均值,不包括6,空白和0

O栏有工作人员姓名,例如John,Mark,Tim .......

我想要做的是让Cell O4在我使用过滤器功能仅显示所选工作人员的结果后自动计算P列中显示的数字的平均值。

我希望excel可以自动执行此操作,但是无论我是否已经过滤,单元格O4仍然显示整个列P的平均值。

我在另一个论坛上给出了下面的公式,但它似乎给出了稍微错误的结果,尽管只是少量,但我需要在可能的情况下得到结果。任何帮助表示赞赏。

= 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)) )

2 个答案:

答案 0 :(得分:2)

也许

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

会做你想要的。假设过滤器位于O列。

如果手动隐藏行,则SUBTOTAL中的103也会排除。如果这不是必需的,它应该只排除隐藏的行,如果已过滤,则使用3代替。

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

答案 1 :(得分:0)

我会在新工作表中创建一个单独的表,其中包含所有唯一的工作人员,然后执行计算。这样,您只需扫描表格即可快速比较所有员工的值,而无需不断更新过滤器以查看可能数十或数百名员工的值。您可以将工作人员姓名范围和标准添加到AVERAGEIFS公式中。

对于你的例子:

Sheet 2

        A           B   
        ---         --- 
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")