在Excel中取最低的n%的平均值

我在excel中有一列数据,我需要把最低10%的平均值。 我的数据是:

1 2 3 4 5 6 7 8 9 10 

所以最低30%的平均值将是 – (1 + 2 + 3)/ 3 = 2。是否有办法在excel中自动执行这个操作,我只需要给它多less百分比就可以了,回答?

更简单的版本:无需数组公式或间接要求

假设列A数据和单元格B1所需的百分比(作为小数)

 =AVERAGEIF(A:A,"<="&SMALL(A:A,COUNT(A:A)*B1)) 

当你说'我所要做的就是给它多less百分比,我给出答案'的时候,我不完全确定你在找什么,但是你也可以试试AVERAGEIF

 =AVERAGEIF(A1:A10,"<="&COUNTA(A1:A10)*0.3) 

假设数据在A1:A10的范围内。 您可以参考0.3的百分比。

 =AVERAGEIF(A1:A10,"<="&COUNTA(A1:A10)*B1) 

如果你把百分比放在B1 ,那么公式也会相应地改变。

假设你的数据在A1:A10中,你想要的数据在B1:

 =AVERAGE(SMALL(A1:A10,ROW(INDIRECT("1:"&(B1*COUNT(A1:A10)))))) 

注意! 这是一个数组公式! 这意味着你必须进入顶部的公式栏(不是在单元格中),并按下ctrl shift完成。

这将把这个公式包含在这些{}中,所以你会知道你做对了。 键入他们不起作用,你必须按Ctrl + Alt + Enter!

它是如何工作的?

 ROW(INDIRECT("1:"&(B1*COUNT(A1:A10)))) 

Count会检查你的列表中有多less项,所以它知道需要平均多less个数字。 比方说B1是40%。

10项中的40%是4,但是20中的40%是8。

由于它是10个条目,我们将创build一个“数组”,从1到4(40%)的一系列数字。

*SMALL(A1:A10*

SMALL在一个范围内find* n *个最小的数字。 用我们的1到4的数组,它会find最低的4个条目。

 AVERAGE( 

然后我们平均的结果:)