获得一列中前30%值的平均值

时间:2012-06-01 15:19:03

标签: excel excel-formula

我有一个列出一堆数字的专栏。如何在一列中选择前30%值的平均值:

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

所以,前30%是'10,9,8',平均值是(10 + 9 + 8)/ 3 = 9

4 个答案:

答案 0 :(得分:6)

如果您使用的是excel 2007或更新版本,=AVERAGEIF(A2:A10,">"&PERCENTILE(A2:A10,0.7))

答案 1 :(得分:6)

在任何版本的excel中,您可以使用与Sean建议相同的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确认

这些都应该给出相同的结果

答案 2 :(得分:1)

不使用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。

答案 3 :(得分:0)

您也可以在没有公式的情况下执行此操作,方法是添加列标题并选择:

数据&gt;过滤器&gt;数字过滤器&gt;前10名......(前30%)

突出显示列以查看总和,平均值,计数,最大值。 (如果未显示,请右键单击状态栏并选择“平均值”。)

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