在做分组报表统计时经常要求按照数据升序获降序排序,在group函数的第5个参数处可指定分组后对组的排序表达式,这样报表展现时能够直接根据该表达式排序,但是将来某些单元格的数据可能是通过其他单元格计算后的结果,这样就无法通过group函数的参数指定,如下图
报表D2单元格的数据是根据前两个单元格相减计算后的结果,此时无法通过group函数来完成排序控制操作,那么有其它何种方法能够实现依据该单元格的结果进行排序呢?
下面介绍下实现流程。
首先在最后边插入一个隐藏列,并且在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单元格中,其余几个单元格类似,如下图:
然后再将没用的行列隐藏掉,就能实现对应的需求,按照单元格表达式的计算结果进行排序展现,结果如下: