No.1 RANK()简单排序
语法:RANK(number,ref,[order])
参数:
- Number:必需,要找到其排位的数字。
- Ref:必需,数字列表的数组,对数字列表的引用。Ref 中的非数字值会被忽略。
- Order:可选,一个指定数字排位方式的数字。0或省略降序,非0升序。
案例:
降序: =RANK(C2,$C$2:$C$13,0)
升序: =RANK(C2,$C$2:$C$13,1)
No.2 SUMPRODUCT()分组排序
案例:
-- 降序
=SUMPRODUCT(($B$2:$B$13=B2)*($C$2:$C$13>C2))+1
-- 升序
=SUMPRODUCT(($B$2:$B$13=B2)*($C$2:$C$13<C2))+1
解释:
- 2:13=B2 返回的是一个数组区域,判断是否等于B2,结果是{TRUE,...,False,...}
- 同样的 2:13<C2 也是返回一个数组区域,结果类似 {TRUE,False....}
- 如果继续有新增分组则继续乘以新的数组区域,如2:13=A2
- 为什么最后+1。因为数组区域用的小于或者大于,没有比最大值大的/最小值小的,所以起始排名是0,需要统一+1。
No.3 COUNTIFS()简单排序
降序: =COUNTIFS(B:B,">"&B2)+1
升序: =COUNTIFS(B:B,"<"&B2)+1
No.4 RANK+COUNTIFS不重复排名
降序:
=RANK($B2,B:B)+COUNTIFS($B$2:$B2,$B2)-1
升序:
=RANK($B2,B:B,1)+COUNTIFS($B$2:$B2,$B2)-1
解释:重复排名 + 截至当前单元格出现次数 - 1