特殊运算符- 定位模型-参考:报表模型
目录

特殊运算符

$运算符

请看下面的表格:

设计器中只有一行的单元格表达式,扩展后变成了很多行。而该表格中的难点是计算比去年同期,也就是说,对于2006年7月份的格子来说,需要和2005年7月份的数据进行对比运算,而2006年4月份的格子需要和2005年4月份的格子进行对比运算。而这个表格中的月份不是连续的,也不按顺序排列,因此仅仅靠层次坐标、位移坐标无法定位到去年同月份的单元格,需要借助条件表达式。

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

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

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

语法: $Cellx

返回值:当前格的Cellx主格的值

说明:Cellx必须是当前格的主格,这样$Cellx才能够正确运算,其返回值是当前格所属的Cellx主格的值。

例如:复杂同期比报表中,希望在E2单元格计算出“比去年同期”,这个指标的运算逻辑是:当前月的订单金额/去年当月的订单总金额,如果去年的该月无订单,则不计算。 从下图中可以看出,E2格的表达式最关键的在于如何表达出上一年度中该月的订单总金额,该报表年度和月份都不是连续的,因此需要在E2格的表达式中加一些判断条件,把E2格的表达式写成:=C2/C2[`0]{A2==$A2-1 && B2==$B2}。

&运算符

单元格是可以扩展的,一个单元格可以扩展出多个格子,需要知道扩展出来的格子在所有扩展出来的格子中排名时,就引入了&运算符,它可以获得当前格所属的某主格在所有扩展出来的格子中的排序,这种运算也称为层次坐标的逆运算。

语法: &Cellx

返回值: 整数,当前格所属的Cellx主格在所有扩展出来的格子中的排序

说明: Cellx必须是当前格的主格,这样&Cellx才能够正确运算,其返回值相当于是当前格所属的Cellx主格的位置。

例如:A1=to(1,3)  B1=to(4,6)  C1=A1*B1,扩展后C1的第2行值为5,对此格,&A1返回1,&B1返回2;扩展后C1的第6行值为12,对此格,&A1返回2,&B1返回3。