复杂同期比

阅读(3414) 标签: 同期比,

本节将以一个同期比报表为例,讲述$运算符的使用方法。

一个例子

在例子12.4.1中年、月均为连续的,如果我们要做的比例不是根据连续的年月算出来的该如何操作呢?我们先举一个例子,这里我们沿用12.4.1中的例子:

这个报表中,我们希望在E2单元格计算出“比去年同期”,这个指标的运算逻辑是:当前月的订单金额/去年当月的订单总金额,如果去年的该月无订单,则不计算。

从上图中可以看出,E2格的表达式最关键的在于如何表达出上一年度中该月的订单总金额,该报表年度和月份都不是连续的,因此我们需要在E2格的表达式中加一些判断条件,我们来看一下润乾报表是如何实现的。

这里除了在例子12.4.1.rpx中用到的位移坐标还用到了$运算符,请参见 $运算符,我们把E2格的表达式写成:=C2/C2[`0]{A2==$A2-1 && B2==$B2},报表保存为12.7.1.rpx,如下图所示:

$ 运算符

请看下面的表格:

年份

月份

销售额

比去年同期

2005

1

23

 

3

43

 

4

456

 

7

765

 

2006

4

876

 

1

98

 

7

56

 

 

该表格在设计界面中是如下样子:

年份

月份

销售额

比去年同期

A2

B2

C2

D2

可以看出,设计器中只有一行的表达式单元格,但是扩展后变成了很多的行。而该表格中的难点是计算比去年同期,也就是说,对于20067月份的格子来说,需要和20057月份的数据进行对比运算,而20064月份的格子需要和20054月份的格子进行对比运算。

而这个表格中的月份不是连续的,而且不是按顺序排列,因此仅仅靠层次坐标、位移坐标无法定位到去年同月份的单元格,需要借助条件表达式。

此时我们往D2单元格中写入表达式:C2-C2[A2:-1]{当前格的B2主格值==目标格的B2主格值}

这时我们会发现,条件表达式没法写了,当前格的主格是B2,目标格的主格也是B2,如果我们写成B2=B2,显然搞不清谁是谁的,于是我们引入了$运算符,他在格集条件表达式中指代当前格的主格

例如上面的条件表达式我们可以写成:C2-C2[A2:-1]{$B2==B2},其中$B2指代当前格的B2主格,B2指代目标格的B2主格

总结:$运算符的书写规则如下:

$Cellx

其含义是在格集表达式中指代当前格的Cellx主格