分组报表之组内页码设置

分组报表的按组分页,且每组按行分页,并且给每组数据增加对应的页码,该如何设置呢?

如下图:
需要按照 A3 中的 N_PRODUCT_CODE 字段分组,且展示每组的明细数据,30 行为一页,并且增加组内页码以及分组合计。

11png

修改报表模板如下图所示:

22png

B3 表达式为:=ds1.count(N_PRODUCT_CODE==A3)
计算每个分组 N_PRODUCT_CODE 中的记录条数有多少。

C3 表达式为:=if(B3/30==0,int(B3/30),int(B3/30)+1)
计算每组总页数。通过判断每组的条数是否整除 30,如果整除,则有 B3/30 的页数,否则 int(B3/30)+1 页。

D3 表达式为:=to(0,B3/30) 并且设置显示值为 value()+1 显示当前页码。

E3 表达式为: =to(0+D330,29+D330)
这里根据 D3 的页码数扩展出对应的序号行,比如第一页扩展出的是 1 到 30,第二页展示的就是 31 到 60,用于后边取明细数据时根据行数取数。取不到的数据会显示空白行。

F3 的表达式为:=valueat(ds1.select(LOAN_AMT,N_PRODUCT_CODE==A3),E3)
这里用到了 valueat 函数,该函数可以从一组数据内根据位置取出某条信息,从 0 开始,这样就可以根据 E3 单元格的序号取出对应的明细记录。

E4 表达式为:=sum(F3{}) 计算每页的合计
E5 表达式为:=ds1.sum(LOAN_AMT) 计算每组的合计
G4 表达式为:=“第”+disp(D3)+“页”+" "+“共”+C3+“页” 显示当前页是组内第几页以及组内共几页。 disp() 用来获取单元的显示值。
G5 表达式为:=“共”+pcount()+“页” 显示报表的总页数

预览效果:

2gif

最后中间的辅助列可以隐藏。
报表示例:

zip