动态交叉表头报表制作
润乾报表支持交叉报表的制作,报表即纵向分组扩展又横向分组扩展,在交叉区域对统计项进行汇总,但如果需要在纵向分组时要求每个组跟随一个横向表头并且根据纵向分组的不同横向扩展出的表头也要相应变化,这样的需求如果在报表张实现呢。我们先来看下报表的效果图,如下:
从上图可看到,报表纵向按照年进行分组扩展,同时每年又能生成一个横向分组表头,该表头按照地区横向扩展,并且要求扩展出的数据根据年份的不同进行变化,如上图:1998年有6个地区,2007年由于数据不同只扩展出4个地区。
下面介绍下这种动态交叉表头报表的制作方法。
如果这个横向表头完全一样的话相信大家都知道怎么做,只需要简单的设置即可,所以这里先做出报表的大概样式,也就是设置表头斜线以及纵向分组的制作,如下图:
这里就是一个简单的交叉报表,需求中要求每个年跟随一个交叉表头,所以需要将A1单元格的左主格设置成A2,这样就能实现交叉表头跟随年份扩展,但这里又出现一个新问题,A2单元格纵向扩展, A1单元格的左主格设置成了A2,但D1单元格本身是横向扩展,这样在扩展方式上就出现了冲突,必须要想办法解决这种横向扩展单元格不能有左主格的情况,解决办法:
在报表上方新增两行,依次写入表达式,如下图:
下面解释下这几个表达式的写法,在D1单元格中用到了=to(1,count(ds1.group(地区,false))),该表达式含义为,因为报表将来要求横向扩展,但是如果把这个横向扩展单元格的左主格设成纵向扩展时又出现冲突,所以在上方增加一个辅助单元格做横向扩展,并且扩展出来的个数就是按照地区分组后地区的个数。D2单元格表达式:= ds1.group(地区,false),因为要求每个年度下的地区扩展出来的数据不同,所以这里按照地区进行分组,注意:要将A2单元格的左主格设置A4单元格,也就是D2出来的地区是经过A4单元格分组后的值。出于样式上的考虑,将D2单元格设置成不可扩展单元格,并且第一行和第二行要隐藏掉,在D2单元格中算出了当前年度所对应的地区,并且设置不可扩展,返回的结果为地区的一个组合,并且地区之间用逗号隔开,所以在D3单元格中用到了表达式:=split(str(D2),”,”)[D1]。首先将D2单元格按照逗号分隔开,返回一个数组,并且通过润乾的层次坐标根据D1的值取这个数组内的第几个值,就是得到当前年度下的地区,并且第三行的左主格设成了A4,就能实现地区跟随年度扩展的效果。最后在D列中设置,如果地区列为空,则将该列隐藏。