得到的值的前30%的平均在一列中(Getting average of top 30% of the

2019-09-17 16:31发布

我列出一堆数字列。 我怎样才能选择一列中的值的前30%的平均水平:

'Values'
10
9
8
7
6
5
4
3
2
1

这样,顶部30%是'10,9,8' 和所述平均值(10 + 9 + 8)/ 3 = 9

Answer 1:

在Excel中的任何版本,你可以使用沿着相同的路线肖恩的建议,即无论是SUMIF / COUNTIF

=SUMIF(A1:A10,">"&PERCENTILE(A1:A10,0.7))/COUNTIF(A1:A10,">"&PERCENTILE(A1:A10,0.7))

或较短的“阵列式”

=AVERAGE(IF(A1:A10>PERCENTILE(A1:A10,0.7),A1:A10))

使用Ctrl + Shift + Enter确认

这些都应该得到相同的结果



Answer 2:

如果您使用Excel 2007或更新, =AVERAGEIF(A2:A10,">"&PERCENTILE(A2:A10,0.7))



Answer 3:

如果不使用VBA:

将数据放入列A.

创建该中间柱B:

    B1=IF(RANK(A1,$A$1:$A$10)<=30*COUNT($A$1:$A$10)/(100), A1,0)
    B2=IF(RANK(A2, ...

然后用平均此列:

    =AVERAGEIF(B1:B10,">0")

为了您给出的例子,你获得了9个。



Answer 4:

您还可以通过包括列标题,然后选择做这没有公式:

数据>过滤>过滤制造商> 10 ...(前30%)

突出显示栏看到求和,平均值,计数,最大值。 (右键单击状态栏,如果没有显示选择“平均”。)

如果你想在单元格中的滤波平均值的结果,你可以用=SUBTOTAL(1,A2:A11)



文章来源: Getting average of top 30% of the values in one column