如何实现报表数据排名
数据排名是报表中常见的需求,排名可以让分析和比较变的更直观,报表中常见的排名方式有很多种:重复排名、去重排名、横向排名以及多级排名。下面通过几个例子看下报表里面是如何实现不同排名的。
·重复排名
使用设计器自带的 demo 数据库的“学生成绩表”中一班的数学成绩做一个重复排名。结果如下图所示:
报表设计如下图所示:
其中,E3 单元格:=count(D3[`0]{D3>$D3})+1 为主要表达式。该表达式是统计所有成绩大于当前单元格成绩的学生个数,然后加一,从而实现对成绩排名的效果。
·去重排名
在重复排名表的基础上改为去重排名。
·增加辅助列 E3 表达式:=row() 取得当前单元格所在行的行号
·G3 表达式:=count(D3[`0]{F3==$F3&&E3<$E3}) +F3 该表达式是统计 D3 单元格中满足重复排名中的值且行号小于当前行,再加上之前的名次即可实现去重排名。
·辅助 E、F 列可隐藏。
最后效果为:
·横向排名
纵向排名比较常见,但是横向排名也会用到,我们直接将上表改为横向统计排名看下是如何实现的。
其中 B4 表达式:=count(B3[;0]{B3>$B3})+1 是在[
0] 根坐标里面加了分号即可实现横向排名。(因数据比较多,B2 只取了 6 条 数据做测试)
结果如下图所示:
·多级排名
多级排名即组内排名,前面三种排名都是针对同一班级的数据排名,如果是多个班级呢,对每个班级的做排名,然后多个班级一起排名,我们一起来看下是如何实现的。
其中 D3:=count(C3[A3]{C3>$C3})+1 是计算同班级内的排名
E3:=count(C3[`0]{C3>$C3})+1 是计算所有同学的一个排名
结果如下图所示:
以上就是不同排名的实现方式,它主要是使用“根坐标”以及“层次坐标”实现的。
其中0 代表了根坐标。而层次坐标相当于描述任意一个节点或者叶子到达根的路径,这样我们就可以定位到对应的单元格从而进行计算。它的表达式规则为: cellx[
0, Lk:lk, Lk-1:lk-1,……L1:lk; `0, Tk:tk, Tk-1:tk-1,……T1:t1]