我在 excel 中有一列数据,我需要取底部 10% 的平均值。我的数据如下:
1
2
3
4
5
6
7
8
9
10
所以底部 30% 的平均值将是 - (1+2+3)/3 = 2。有没有办法在 excel 中自动执行此操作,我所要做的就是给它我想要的百分比,它给了我回答?
我在 excel 中有一列数据,我需要取底部 10% 的平均值。我的数据如下:
1
2
3
4
5
6
7
8
9
10
所以底部 30% 的平均值将是 - (1+2+3)/3 = 2。有没有办法在 excel 中自动执行此操作,我所要做的就是给它我想要的百分比,它给了我回答?
更简单的版本:不需要数组公式或间接
假设列A
中的数据和单元格中所需的百分比B1
(作为小数)
=AVERAGEIF(A:A,"<="&SMALL(A:A,COUNT(A:A)*B1))
当您说“我所要做的就是给它我想要的百分比并且它给了我答案”时,我不完全确定您在寻找什么,但是您也许可以尝试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 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(
然后我们平均结果:)