润乾报表 统计表如何实现数据按照单元格计算后的结果排序

 

在做分组报表统计时经常要求按照数据升序获降序排序,在 group 函数的第 5 个参数处可指定分组后对组的排序表达式,这样报表展现时能够直接根据该表达式排序,但是将来某些单元格的数据可能是通过其他单元格计算后的结果,这样就无法通过 group 函数的参数指定,如下图:

报表 E2 单元格的数据是根据前两个单元格相减计算后的结果,此时无法通过 group 函数来完成排序控制操作,那么有其它何种方法能够实现依据该单元格的结果进行排序呢?

示例报表文件:jisuanhoupaixu.zip

方法一:通过隐藏列 +to 函数实现

首先在最后边插入一个隐藏列,并且在 E2 单元格中按照 D2 单元格的数据计算排名,在 E2 单元格中写入表达式:=count(D2[`0]{D2>$D2})+1,然后将该列隐藏。现在在 E2 单元格中计算出了排名,所以可以根据 E2 单元格中数据的顺寻进行数据展示。

在报表 A 列左边和下边插入行列,并且写表达式,如下图:

并且在 A3 单元格中写入表达式:=to(1,count(B2{})),控制该行进行纵向扩展,并且扩展出原有地区所对应的行数,这样报表展现时就会在下方多扩展出一片数据区域,并且第一列为 1,2,3 这种形式,因为前面在 F2 单元格中根据实际金额做了对应的排名,出来的值也是 1,2,3 形式,所以可以根据排名相同进行数据选择,在 B3 单元格中写入表达式:=B2{F2==$A3},这样报表就会展现成下面形式:

该表达式使用了润乾的层次坐标,表示从 B2 单元格中取数,但是取数时加上了限定条件,F2(排名)单元格的值等于当前单元格所对应 A3 的值,这样就能从 B2 单元格中按照顺序取数对应的地区并放置在 B3 单元格中,其余几个单元格类似,然后再将没用的行列隐藏掉,就能实现对应的需求,效果图如下图所示:

方法二:通过隐藏列 +sort 函数实现

主要实现方法如下图蓝色标识部分配置:

设置 F4 单元格为 sort 函数,对 F2 进行排序,然后前面列单元格取数时,根据此限定条件取对应数据

注意最前面一个单元格,例如上图中的 A4 需要设置左主格为 F4,具体制作步骤不再详述。