自动计算过滤结果的平均值
Automatically working out the average of filtered results
我有一个电子表格,其中 P 列的分数在 1-6 之间
单元格 O4 具有以下公式:=AVERAGEIFS(P8:P5000,P8:P5000,"<>6",P8:P5000,"<>0")
此公式搜索 P 列得分的平均值,不包括 6、空白和 0
O 列有员工姓名,例如 John、Mark、Tim......
我想做的是在我使用筛选功能仅显示选定员工的结果后,让单元格 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)),SUBTOTAL(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))}
会做你想做的。假设过滤器在 O 列上。
如果手动隐藏行,小计中的 103 也会被排除。如果这是不需要的并且它应该只排除隐藏的行,如果被过滤,那么使用 3 代替。
这是一个数组公式。将其输入到没有大括号的单元格中,然后按[Ctrl]+[Shift]+[Enter]创建数组公式。
我会在一个新的 sheet 中创建一个单独的 table,其中包含所有唯一的员工,然后执行计算。这样,您只需扫描 table 即可快速比较所有员工的值,而不必不断更新过滤器以查看可能数十或数百名员工的值。您可以将员工姓名范围和标准添加到您的 AVERAGEIFS 公式中。
以你的例子为例:
Sheet 2
A B
--- ---
1 | Staff Average
2 | Bob =AVERAGEIFS(Sheet1!$P:$P00,Sheet1!$O:$O00,A2,Sheet1!$P:$P00,"<>6",Sheet1!$P:$P00,"<>0")
3 | Mary =AVERAGEIFS(Sheet1!$P:$P00,Sheet1!$O:$O00,A3,Sheet1!$P:$P00,"<>6",Sheet1!$P:$P00,"<>0")
4 | Joe =AVERAGEIFS(Sheet1!$P:$P00,Sheet1!$O:$O00,A4,Sheet1!$P:$P00,"<>6",Sheet1!$P:$P00,"<>0")
我有一个电子表格,其中 P 列的分数在 1-6 之间
单元格 O4 具有以下公式:=AVERAGEIFS(P8:P5000,P8:P5000,"<>6",P8:P5000,"<>0")
此公式搜索 P 列得分的平均值,不包括 6、空白和 0
O 列有员工姓名,例如 John、Mark、Tim......
我想做的是在我使用筛选功能仅显示选定员工的结果后,让单元格 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)),SUBTOTAL(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))}
会做你想做的。假设过滤器在 O 列上。
如果手动隐藏行,小计中的 103 也会被排除。如果这是不需要的并且它应该只排除隐藏的行,如果被过滤,那么使用 3 代替。
这是一个数组公式。将其输入到没有大括号的单元格中,然后按[Ctrl]+[Shift]+[Enter]创建数组公式。
我会在一个新的 sheet 中创建一个单独的 table,其中包含所有唯一的员工,然后执行计算。这样,您只需扫描 table 即可快速比较所有员工的值,而不必不断更新过滤器以查看可能数十或数百名员工的值。您可以将员工姓名范围和标准添加到您的 AVERAGEIFS 公式中。
以你的例子为例:
Sheet 2
A B
--- ---
1 | Staff Average
2 | Bob =AVERAGEIFS(Sheet1!$P:$P00,Sheet1!$O:$O00,A2,Sheet1!$P:$P00,"<>6",Sheet1!$P:$P00,"<>0")
3 | Mary =AVERAGEIFS(Sheet1!$P:$P00,Sheet1!$O:$O00,A3,Sheet1!$P:$P00,"<>6",Sheet1!$P:$P00,"<>0")
4 | Joe =AVERAGEIFS(Sheet1!$P:$P00,Sheet1!$O:$O00,A4,Sheet1!$P:$P00,"<>6",Sheet1!$P:$P00,"<>0")