巧用数组求平均值

标签:
平均分任意名次中间前几名 |
分类: IT |
有朋友是教学的,几乎每周都要统计学生的考试成绩,如前十名的平均成绩,后来竟然要求从5名到10名的平均成绩,十几班让他用普通方法弄了好长时候。实际上如果用数组来,很容易解决这个问题。
成绩表如下,各科不用排序。
http://s8/mw690/001EG9V7ty6EU02X1ST97&690
现在要求出英语科的成绩在前10的学生平均成绩,如果用一般方法很是麻烦,但用数组确实简单。
如下:
http://s4/mw690/001EG9V7ty6EU0dVcKT93&690
在E39中输入以下内容:=SUM(((RANK(E3:E38,E3:E38)<=10))*1*(E3:E38))/10
然后同时按下shift+ctrl+enter三个组合键,公式变为::{=SUM(((RANK(E3:E38,E3:E38)<=10))*1*(E3:E38))/10},多了个在括号,表示是数组公式,就会计算出你要的结果了。
解释:RANK(E3:E38,E3:E38)<=10,是找出E3:E38单元格中的成绩在前10名的为ture(1),否则为flase(0).
乘以1转化为可计算的数字,再乘以(E3:E38)中对应的成绩,sum求和,最后除以10求平均值。
你可以根据你的要求,来更改上面公式中的数据,从而为你所用。
实际上呢,要求前10名学生的平均分,有更简单的公式。
{=AVERAGE(LARGE(C3:C32,ROW(INDIRECT("1:10"))))}
你只要更改后面的10的大小,可以任意名次的平均值。
同样求出6名-10名学生的平均成绩。
http://s13/mw690/001EG9V7ty6EU11JUks5c&690
在c39单元格中输入的公式如图为:
=SUM(((5<=10))*1*(C3:C38))/5
然后同时按下shift+ctrl+enter三个组合键,公式变为::{=SUM(((5<=10))*1*(C3:C38))/5},多了个在括号,表示是数组公式,就会计算出你要的结果了。
过程就不在说明了,自己想想其中的道理吧!
当然也可以用下面这个公式,更为简洁:
{=AVERAGE(LARGE(C3:C32,ROW(INDIRECT("5:10"))))}
你只需要更改5:10,可以求任何名次之间的平均值。
总之,用数组真方便。