2

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

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

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

4

4 回答 4

6

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

于 2012-06-01T18:14:09.330 回答
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 确认

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

于 2012-06-01T18:42:54.273 回答
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。

于 2012-06-01T15:39:48.820 回答
-1

您也可以在不使用公式的情况下通过包含列标题并选择:

数据 > 过滤器 > 数字过滤器 > 前 10...(前 30%)

Highlight the column to see sum, average, count, max. (Right-click the status bar and select "average" if not displayed.)

If you want the result of the filtered average in a cell you can use =SUBTOTAL(1,A2:A11)

于 2012-06-01T21:09:34.280 回答