求教专家,如何用excel表格自动计算一组数据前2/3的平均值

问题描述:

求教专家,如何用excel表格自动计算一组数据前2/3的平均值
在表格中一列60个单元格中输入一组数据(1、随机输入,不按大小顺序;2、可能还有空白单元格,空白单元格不计入统计个数.)
如何用excel表格自动计算一组数据,按从大到小排列后,排在前2/3的数据的个数和平均值,以及排在后1/3的数据的个数和平均值?
说明:主要是要制作一个固定格式的表格,用于统计计算,后期只要输入数据后就可自动得出结果,所以不能对数据进行排序等操作,只能用公式/函数计算,头疼了.
有几个要求的:
1、输入数据大小是随机,输入完成后不能再变动,也就是说不能对数据进行排序操作
2、输入时可能会有空白单元格,这些空白单元格是不纳入个数计算以及平均值计算的
3、求前2/3的数据的平均值,是这组数据按从大到小排序后的,排在前面的2/3个数的平均值
4、要求整个表格,完成后只要在固定区域(如A1:A60)中输入数据,即可自动计算出结果,其公式等设置好后不能变动
公式/函数小弟只懂一点皮毛,面对这些变态要求,崩溃了,orz
另外,答案中最好能带上一点解说,小白们万分感激!
1个回答 分类:综合 2014-10-01

问题解答:

我来补答
难点在于空白单元格不计入统计个数
因此建议使用一个辅助列进行个数统计
假设数据在A1:A60
则使用B1:B60作为辅助
其中B1公式为:=IF(A1="","",COUNT(A$1:A1))
向下复制填充到B60
统计前2/3数据的个数为:=ROUND(COUNT($A$1:$A$60)*2/3,)
平均值为:=SUMIF($B$1:$B$60,""&ROUND(COUNT($A$1:$A$60)*2/3,),$A$1:$A$60)/ROUND(COUNT($A$1:$A$60)/3,)
再问: 首先,非常感谢您的回答,但是这个我在表中试了一下,计算的是直接输入完成后,位置排在前面2/3(或后1/3)的数据的平均值,而非大小排序,问题我又补充详述了一下要求,请了解!
再答: 我的解答并非是大小排序 B列是对每个数据进行编号 然后根据编号判断是否是前2/3,并进行求和 应该是符合要求的 请仔细理解公式的含义
再问: 了解B列编号的用意是排除空格,这个ideal非常不错! 但是计算的时候,要求是数据按从大到小排列后,取前2/3的数据计算平均值。 比如说我在A1:A45中输入了数据,按上面的公式计算前2/3的数据的平均值,是算的A1:A30的平均值,而我想要的是A1:A45中数据按从大到小排列后,排在前面2/3的数据的平均值,也就是说,取最大的2/3部分的数据求平均值。 这个可以参考网友 骨头81 给的公式,只是他的公式没有考虑空格,望解惑!
再答: 哦,不好意思,我理解错了,原来还需要按大小统计 那么有一个问题 如果有相同的数据,该如何取值? 比如只有9个数据,假设就是1,2,3,4,5,6,6,6,7 取前2/3的数据应该是1,2,3,4,5,6 那么另外的两个6是否不需要计算?
再问: 另外两个6不需要计算,这种算法我也想过,就是设置出在2/3位置的临界数,然后用大于等于临界数的总和除以个数,得出平均值。但是这种计算方法在出现临界数有多个重复的时候,结果会有偏差,不符合要求
再答: 明白了 请将B列的辅助编号公式改为: =IF(A1="","",RANK(A1,$A$1:$A$60,1)+COUNTIF(A$1:A1,A1)-1) 计数和统计公式不变
 
 
展开全文阅读
剩余:2000
下一页:fx的解析式