Oracle查询年级各个班前几名,在整个年级的成绩表中各班级求各班的排名

似乎这个标题说得太复杂了些,不过,我们通过如下的表来具体说明,本例要讲哪个技术教程。

本例讲的是一个比较复杂的Excel排名的问题。

先看下表。

02bc6287c02413cb7de4f595d5fefa85.gif

看上图吧,列分别为班级、姓名、总分和班级排名。

首先,这种表格是年级上所安排的考试名单,不能排序,以防止相邻的座位不能有同班的同学。

现在,总分出来了,我们得按照班级的号码,求出各表的每个同学在本班的成绩排名,比如,1班的同学要和1班的进行比较后排名,不能和2、3班一起排名,即每个班级的只能和本班级的进行排名,不能和其它班级混着排名。

那么,如何才能保证各班的和各班的在排名的时候即要准确,同时还要使其它班的排名也一起排出来互不影响。

方法很简单,使用SUMPRODUCT函数就足够了。

一、先看结果

我们先看结果吧,选中D2单元格,然后输入如下图的公式:

a608132deda86003df6d9683dcb924d4.gif

即 =SUMPRODUCT((A$2:A$7=A2)*(C$2:C$7>C2))+1 按下回车键即可,然后使用填充功能结果就出来了。

就这么简单,各班和各班排名一下就出来了,相当准确方便。

二、公式分析

下面就针对本例子讲解函数公式。

SUMPRODUCT((A$2:A$7=A2)*(C$2:C$7>C2))公式,可看作:

SUMPRODUCT((条件一)*(条件二))

如上的含义就是SUMPRODUCT函数必须同时满足条件一和条件二所得的记录数,即个数。

SUMPRODUCT((A$2:A$7=A2)*(C$2:C$7>C2))理解为:

A$2:A$7=A2,A$2:A$7区域,必须等于A2这个值,即班级号;此为条件一;

C$2:C$7>C2,C$2:C$7区域,必须大于C2这个总分,此为条件二;

满足如上条件的个数。

说得简单点,A2是班级号,其值为1,那么A$2:A$7这个区域只要是等于1这个班级号,就满足条件一;

同时,还要满足C$2:C$7>C2,C2为总分,其值为500,此为条件二。

班级号为1,成绩大于500的,有几个呢?看上班,满足这两个条件的个数为1,所以,公式SUMPRODUCT((A$2:A$7=A2)*(C$2:C$7>C2))的结果为1。

最后,在公式SUMPRODUCT((A$2:A$7=A2)*(C$2:C$7>C2))的后面加上1,公式就变成如下公式:

=SUMPRODUCT((A$2:A$7=A2)*(C$2:C$7>C2))+1

这就是所需要的最终的公式。

例子就给您介绍到这里,想了解SUMPRODUCT函数在其它方面的运用,你还可以参阅如下的文章:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值