1

我在 excel 中有一列数据,我需要取底部 10% 的平均值。我的数据如下:

    1
    2 
    3
    4
    5
    6
    7
    8
    9 
    10

所以底部 30% 的平均值将是 - (1+2+3)/3 = 2。有没有办法在 excel 中自动执行此操作,我所要做的就是给它我想要的百分比,它给了我回答?

4

3 回答 3

3

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

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

=AVERAGEIF(A:A,"<="&SMALL(A:A,COUNT(A:A)*B1))
于 2013-08-18T03:13:16.403 回答
2

当您说“我所要做的就是给它我想要的百分比并且它给了我答案”时,我不完全确定您在寻找什么,但是您也许可以尝试AVERAGEIF

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

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

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

如果将百分比放入B1,则公式将相应更改。

于 2013-08-13T15:47:48.793 回答
2

假设您的数据在 A1:A10 中,而您想要的 % 在 B1 中:

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

笔记!这是一个数组公式!这意味着您必须输入顶部的公式栏(而不是单元格),然后在完成后按ctrl shift enter

这会将公式包含在这些 { } 中,因此您会知道您做对了。输入它们不起作用,您必须 ctrl+alt+enter!

它是如何工作的?

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

Count 检查您的列表中有多少项目,因此它知道需要平均多少个数字。假设 B1 为 40%。

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

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

*SMALL(A1:A10*

SMALL 查找范围内的*n*th 最小的数。使用我们的 1 到 4 数组,它将找到最低的 4 个条目。

AVERAGE(

然后我们平均结果:)

于 2013-08-13T16:42:03.103 回答