1. 概述编辑
许多时候,报表设计者并不知道目标单元格的具体位置,仅仅知道目标单元格相对于当前单元格的位移,因此给出了位移坐标。
1.1 概念说明
相对位移坐标是用来描述目标单元格和当前单元格之间的位置关系的表达式,概念图如下图所示:
说明:
参数 | 说明 |
---|---|
Cellx | 表示需要返回结果的单元格 |
Celly | 表示位移时参考的单元格 |
z | 代表相对位移的位置 注:相对后移需要使用“-”符号,相对前移需要使用“+”符号。 |
Cellx[Celly:-z] | 记录位移前 Celly 和 Cellx 的对应关系,记为关系1,当Celly完成-z个位置的位移后,按照‘关系1’返回对应的Cellx。 |
1.2 公式说明
相对层次坐标的公式包括「左父格」和「上父格」,如下图所示:
参数 | 说明 |
---|---|
Cellx | 指目标单元格,是 Lk,Lk-1...L1;Tk,Tk-1...T1 的附属格。 |
Lk | 指某个目标单元格 Cellx 的左父格,Lk 的次序是从远到近的,也就是从离当前格最远的左父格开始,也可以理解为从最高级别的分组格开始。(横向扩展写法) |
lk | 指左父格 LK 扩展后的次序,即扩展后的第几个单元格,如果不指定 lk 或 lk 为 0,则表示为当前表达式所在单元格所属的当前左父格 LK。(横向扩展写法) |
Tk | 指某个目标单元格 Cellx 的上父格,Tk 的次序也是从远到近的,也就是从离当前格最远的上父格开始,也可以理解为从最高级别的分组格开始。(纵向扩展写法) |
tk | 指上父格 Tk 扩展后的次序,即扩展后的第几个单元格,如果不指定 tk 或 tk 为 0,则表示为当前表达式所在单元格所属的当前上父格 TK。(纵向扩展写法) |
注1:如果只有左父格没有上父格,分号可以省略,即Cellx[Lk:±lk,LK-1:±lk-1,......,L1:±l1]。
注2:如果只有上父格没有左父格,分号不能省略,即Cellx[;Tk:±tk,Tk-1:±tk-1......,T1:±t1]。
注3:当相对引用小于-1,即-2,-3,-4,...等时,扩展数据可能出现循环相对。必要时需要用其他条件进行过滤。
由于 单元格扩展 包括横向扩展和纵向扩展,因此给出两个示例。
2. 纵向扩展示例编辑
2.1 创建报表
1)使用内置数据 S产品 数据创建如下图所示的报表:
2.2 插入相对层次坐标公式
1)此时在 C2、D2 单元格插入公式A2[A2:-1]、B2[B2:-1],如下图所示:
得到的结果如下图所示:
公式说明:
公式 | 说明 |
---|---|
A2[A2:-1] | 返回以 A2 单元格为父格的上一个 A2 单元格纵向扩展的数值。 |
B2[B2:-1] | 返回以 B2 单元格为父格的上一个 B2 单元格纵向扩展的数值。 |
3. 横向扩展示例编辑
3.1 创建报表
1)使用内置数据 STSCORE 数据创建如下图所示的报表:
3.2 插入相对层次坐标公式
此时在 B3 单元格和 B4 单元格分别插入公式 B2[;B1:-1]和 B2[;B1:+1],如下图所示:
得到的结果如下图所示:
公式说明:
公式 | 说明 |
---|---|
B2 | 表示需要返回结果的单元格 |
B1 | 需要返回结果的单元格的父格,进行位移需要参考的单元格 若该单元格有父格,则需要从最高级别的分组为基准从头开始计算 |
-1 | 相对后移一位,返回前一位单元格上的数据 |
B2[;B1:-1] | B3 单元格返回以 B1 单元格为父格的上一个 B2 单元格纵向扩展的数值。 示例中为 4013、4004、3984、4011 |
B2[;B1:+1] | B4 单元格返回以 B1 单元格为父格的下一个 B2 单元格纵向扩展的数值。 示例中为4004、3984、4011、4029 |