Dzwebs.Net

撰写电脑技术杂文十余年

求满足条件的前N项总分或均值Excel公式应用

Admin | 2014-12-23 10:05:12 | 被阅次数 | 8470

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  开篇之前,我们得和大家把问题的需求讲清楚,这样有助于大家学习本教程。所谓的满足条件,找的是根据一定的条件求符合条件的区域的数据之和或平均分,而满足条件的区域数据呢,只需要前面的N项(这个前N项,是指在不改变原来数据行的顺序经过降序后的前N项),不要全部的数据,下面我们用图表来为大家讲解!

Excel前N项之和图片1

  如上图,A列是学校编号,数据诸如101,102,103,104……等等,不同的编号代表不同的学校。BCD列保存的是成绩。现在,我们要做的就是,逐一对各校的前N名同学进行求总分、平均分。

  下面再把问题说得更简单些,比如,101这个学校,我们要找出该校有多少人,然后,只求前面一部分同学的总分平均分,后面几个的不求总分平均分了。要求是,按照分数从高到低的排序规则,求取总人数的95%个同学的总分和平均值。比如,如果总人数的100人,那么,100的95%就等于95,也就是说,100个人当中求前面的95个同学的总分平均分,剩下的最低分的那5个,不求总分平均分了。下面我们开始吧。

  看下图,如果要使用函数的话,就得使用辅助列了,黄颜色的部分,就是辅助的列了。

Excel前N项之和图片2

  根据需求,我们解决问题的方法和思路为:

  第一步:根据学校编号算出总人数;
  第二步:根据总人数算出总人数的95%;这个95%我们将其看作N,不同的学校,这个N也是不相同的,是灵活变化的,问题的难点之一也就在这个地方了。
  第三步:根据总人数的成绩使用排名方法,求出前面的这N个人的总分和平均分(注意,是前N个人的,不是所有人的,最难的地方莫过于此);

  第一步:根据学校编号算出总人数

  如下图,使用函数的公式为:=COUNTIF(A2:A1517,F2)

Excel前N项之和图片3

  公式里面的参数,A2:A1517代表数据范围,F2是学校编号,连起来的意思就是求取A2:A1517这个范围当中,学校编号为101的总人数,在这里,F2就相当于101了,之所以使用F2,那是因为还有其它学校的也要通过这种方法来计算总人数,填充的时候,使用单元格名称是最灵活的。

  第二步:根据总人数计算出总人数的95%,即算出N为多少

  关于这一步的问题,很简单,我们就不再用图来给出解释了,直接看公式吧:

  =ROUNDUP(G2*0.95,0)

  总分放在G2单元格里面,将其乘以0.95,就是95%的人了,N就计算出来了。函数ROUNDUP是向上四舍五入函数,如果有小数的话,超过0.5就四舍五入为1。

  第三步:根据排名规则先对总人数进行降序,然后只求前面N个人的总分平均分

  这一步是最难的了,需要综合使用函数,同时,还要用数组公式。

  在这里所说的,对总人数进行降序排序,是使用公式来排序,并不是使用菜单功能来排序,因为使用后者,数据行就会变换。我们要的是在不改变行的顺序的情况下降序排序。

  先把公式拿出来让大家看,最后再为大家讲解公式。

  下图是求排序之后的95%的人的总和

Excel前N项之和图片4

  它是一个数组公式:{=SUM(LARGE(IF(A2:A1517=F2,B2:B1517),ROW(INDIRECT("1:"&H2))))},输入数组公式的时候,你先输入=SUM(LARGE(IF(A2:A1517=F2,B2:B1517),ROW(INDIRECT("1:"&H2))))这一串公式,然后按下组合键Ctrl+Shift+Enter键,它就自动带上一对大括号了。

  同理,计算平均值的数组公式为下图。

Excel前N项之和图片5

  {=Average(LARGE(IF(A2:A1517=F2,B2:B1517),ROW(INDIRECT("1:"&H2))))}

  公式解释:

  LARGE这个函数是用来求第几大值的,比如,求第一大的值,第二大的值,第三大的值……相关文章你可以参阅这篇文章:http://www.dzwebs.net/2831.html

  ROW函数返回的是行的序号,或者想返回一序列数据。比如ROW(1:4),它返回的序列数据为:{1;2;3;4}

  如果是ROW(1:237),返回的序列数据(其实就是数组)就是 {1;2;3;4……237},从1到237的数组。该功能正好满足本例子的前237。因为要求取总人数247的95%,刚好就是237人。在这个地方,就更加灵活了,使用单元格地址代替数字,这样更通用些,所以才有了ROW(INDIRECT("1:"&H2)),其中,INDIRECT("1:"&H2)返回的恰好是1:237,这些函数的配合使用,完全恰到好处。最后,在配合SUM就能求出满足条件的前N项之和了。如果相关的函数你不甚了解,请在本站搜索相关的文章查阅。


该杂文来自: Excel杂文

上一篇:用EXCEL做报表的不良习惯

下一篇:row灵活返回序列数组数据通用实例

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计