纵向分组统计横向分栏的报表实现

问题背景

有客户提出下图需求,报表分栏的同时进行纵向分组并汇总。

分析

润乾提供了分栏的功能,但是效果同客户需求有较大出入,所以需要使用其他的方式方法实现。一般带有序号的报表我们可以根据序号的规律,通过行列扩展实现数据分栏的效果。我们来看一下具体实现。

实现步骤

首先,我们看报表数据集中的数据

报表制作如下

其中,C1单元格表达式:=to(1,4),表示分栏数为4,横向扩展,此处扩展要从1开始

A2表达式:=ds1.group(area,false),对地区分组,纵向扩展;

B2表达式:=if(ds1.count()%4==0,ds1.count()/4-1,int(ds1.count()/4)),决定每个分组下应该扩展的行数;

D2表达式:=”总计:“+ds1.count(),求各地区下合计;

B3表达式:=to(0,B2),各分组下数据纵向扩展行,此处扩展从0开始

C4表达式:=ds1.select1(num,num==B4*4+C1),取数中需要根据横向和纵向扩展行列数限定,此处使用效率较高的select1函数

D4表达式:=ds1.select1(data,num==B4*4+C1,,,,true),取数同C4,不过此处要从根集里取,增加第6个参数为true

最后,将报表中不需要显示的行列都隐藏即可。我们来看一下效果: