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

问题背景

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

分析

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

实现步骤

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

报表制作如下

其中, 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

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

热门文章