复杂报表之累积报表
累计报表通过动态格间计算功能,可方便追踪数据的累加趋势,实现占比、比上期等跨行组计算,满足用户对数据累积分析的需求。
下面我们主要介绍一下报表中如何实累积计算。
注:累积值 = 上一行的累积值 + 当前行需要被累积的值
明细报表
报表设计如下:
1、添加数据集,数据来自于 demo 的订单表 。

2、 增加累计表达式
方法 1、使用位移坐标的方式
在 D4 单元格输入表达式为:=C4+D4[-1]
语法:cell[±n]
说明:表示当前格 cell 往上位移 n 格或者往下位移 n 格,其中 + 代表往下位移,- 代表往上位移

预览效果为:

方法 2、使用临时变量的方式

①在 B3 单元格输入 =a=0,此为创建一个临时变量 a,初始值为 0。(该行可隐藏)
②在 E5 单元格输入:=a=a+C5。引用临时变量 a,每一个扩展行给 a 重新赋值,将上一行变量 a 的值 + 本行运货费的结果赋值给变量 a,即实现运货费累计。
预览效果为:

分组报表
数据来自于 demo 的订单表以及运货商表
报表设计如下图所示:

B4 的表达式为:=ds1.group(货主地区; 货主地区:1)
C4 的表达式为:=ds1.group(运货商; 运货商:1),显示值表达式为:ds2.select(公司名称, 运货商 ID==value())
D4 的表达式为:=ds1.sum(运货费)
E4 中表达式如果按照明细报表的累计写法为 =D4+E4[-1],预览报表效果为所有运货费累加,不区分地区。

F4 要计算组内运货费累计,我们可以按照以下步骤操作:

①在运货费前插入一列,并且设置表达式为:=&C4,并设置左主格为 C4
②G4 表达式为:=if(D4==1,E4,E4+G4[-1]) 当 D4 序号为 1 时,就显示 E4 的值,后面序号的值会从序号为 1 的值开始重新累计计算。
③插入一行, 合并 B4 和 B5,然后在 G4 输入:=sum(G4{}) 可以看到组内运货费合计的结果。
预览效果如下:

【拓展】
如果想获取组内第几个值用做其他运算,同样可以使用位移坐标的方式。
例如:获取每组运货商中第二个运货商的运货费的值:=E4[C4:2]
预览效果:

