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

我有一列列出了一堆数字。 我怎样才能select一列中前30%的平均值:

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

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

在任何版本的Excel中,您都可以使用SUMIF / COUNTIF和Sean的build议一样,即

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

或更短的“arrays公式”

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

用CTRL + SHIFT + ENTER确认

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

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

不使用VBA:

将数据放入A列

创build这个中间列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。

您还可以通过添加列标题并select以下内容来执行此操作:

数据>filter>数字filter>前10名(前30%)

突出显示列以查看总和,平均值,计数,最大值。 (右键点击状态栏,如果不显示,select“平均”。)

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