前面我们讲过排名函数RANK,对于简单的排名,这个函数就可以,可是对于有附加条件的排名,这个函数就难办了,比如下面:
![5905d61a9add8220a05f22c5a21bff6b.png](https://i-blog.csdnimg.cn/blog_migrate/9a7602cf4aad51b5c6b65d7677f0ea4f.jpeg)
要求根据同一个产品,不同的供应商按照供货量排名,这时我们直接用rank就无法达到目的了。
下面介绍下解决对于类似这样排名的四种思路:
一、sumifs
D2中公式:
=COUNTIFS($A$2:$A$16,A2,$C$2:$C$16,">"&C2)+1
解析:
多条件计数,满足产品为对应的产品,供货量大于对应的供货量的个数,假定结果为N,说明大于该供货量的个数为N,那该供货量的排名就是N+1。
这里注意条件的正确表达">"&C2
二、sumproduct
E2中公式:
=SUMPRODUCT(($A$2:$A$16=A2)*($C$2:$C$16>C2))+1
解析:
思路和sumifs一致,多条件计数
三、index+frequency
F2中公式:
=INDEX(FREQUENCY(($A$2:$A$16=A2)*$C$2:$C$16,C2),2)+1
解析:
=FREQUENCY(($A$2:$A$16=A2)*$C$2:$C$16,C2),以供货量为区间分割点,将会返回由小于等于供货量的个数和大于供货量个数两个数字组成的数组,{小于等于供货量的个数,大于供货量的个数}
然后用index({小于等于供货量的个数,大于供货量的个数},2,0)就会返回大于供货量的个数,即方法一中的N。该供货量的排名即为N+1。
四、match+large+row
G2中公式:
=MATCH(C2,LARGE(($A$2:$A$16=A2)*$C$2:$C$16,ROW($1:$15)),)
数组公式,三键结束。
解析:
LARGE(($A$2:$A$16=A2)*$C$2:$C$16,ROW($1:$15)),通过large和row配合返回一个由大到小排列的供货量数组,通过match查找供货量在该数组中的位置即供货量的该数组中的排名。
转自:米宏Office