同期比- 动态格间运算-报表设计高级教程
目录

同期比

一、报表实例

先看这张报表

 

该报表是根据年分组并按年、月进行排序。在这个报表中,“比上期”这个指标的运算逻辑是:本月订单总金额/上月订单总金额。我们来看一下快逸报表是如何实现的。

二、设计过程

1、引用数据集demo_订单信息表

2、编辑报表


    (1)A2单元格表达式:=demo_订单信息表.group(year(订购日期),false)

(2)B2单元格表达式:=demo_订单信息表.group(month(订购日期),false)

(3)C2单元格表达式:=demo_订单信息表.sum(单价*数量) ,显示格式:¥#,##0.00,缩进:3

在这个报表中,“比上期”这个指标的运算逻辑是:本月订单总金额/上月订单总金额。 从图中可以看出,D2格的表达式最关键的在于如何表示出前一个月的订单总金额,该报表是根据年分组并按年、月进行排序,因此我们想得到上一期的订单总金额,只要能得到扩展后C2单元格上一单元格的订单金额就可以了。这里用到了快逸报表非线性模型中的位移坐标,我们把D2格的表达式写成:= C2/C2[-1]。

    
3、保存预览

此报表保存为“同期比报表”,预览结果如下:

三、小结 

1. 位移坐标

许多时候,报表设计者并不知道目标单元格的具体位置,仅仅知道目标单元格相对于当前单元格的位移,因此,我们给出了位移坐标。
    位移坐标的运用非常广泛,例如报表中常常需要计算同期比、比上期之类的与时间相关的数据,而这些运算往往需要用到下一行的数据减上一行数据,后一列数据减前一列数据等等。这种涉及到相邻n行或者n列的行间、列间的运算,称为位移运算,相关的表达式称为位移表达式。
    位移坐标是用来描述目标单元格和当前格之间的位置关系的表达式。

例如:

语法:

说明:

例如:

大部分时候,对于单元格的定位是和当前格的位置有关系的,比如当前格的主格或者和当前格有着相同主格的单元格,这时可以采用省略主格的写法。

2. 省略主格表示法

层次坐标和位移坐标的表示比较烦琐,而且大部分时候,对于单元格的定位是和当前格的位置有关系的,比如当前格的主格或者和当前格有着相同主格的单元格,这时可以采用省略主格的写法。
    省略主格时,如果目标单元格的某个主格Lk和当前单元格的主格相同,那么层次坐标/位移坐标中该主格可以不写。
    如果目标单元格与当前格的关系满足缺省主格认定规则,那么直接遵循缺省引用规则的表示法,不需要层次坐标/位移坐标。

例如:

3. 缺省引用规则

 缺省情况下,在单元格的表达式中可以引用其它单元格的值,直接写单元格名即可,这样的运算称为格间运算,这种引用称为缺省的引用规则。在这里,被引用的单元格必须是能够由当前格唯一确定的。
    一般情况下,被引用单元格往往是当前格的主格,或者与当前格有相同的一级主格,或者是固定格。固定格由于不能复制,因此可以唯一确定。

例1:

其中B2单元格的表达式为:=ds2.sum(stock, product_id==A2)

从中可以看到,B2单元格引用了A2单元格,因为A2是B2的主格,因此B2可以引用A2。

例2:

从图中可以看出,C1单元格引用了B1单元格的值,这里,B1的一级主格是A1,C1的一级主格也是A1,因此B1和C1有相同的一级主格,所以C1可以引用B1。

例3:

从图中可以看出,B2单元格的表达式引用了A1和A2单元格,A1单元格是个固定格,既不可以主动扩展复制也不可以被动复制,因此B2可以引用A1;A2是B2的主格,因此B2可以引用A2。