1. 描述编辑
层次坐标是实现复杂报表的一个重要功能。
在进行模板设计时,单元格尚未进行扩展,但是有些时候需要获取扩展后的单元格并进行计算。例如:A1 单元格扩展成 A1-A5,如果某个单元格的值希望对扩展后的 A2 和 A3 进行求和,在扩展前,表达式很难描述这样的关系,而对于扩展后单元格的唯一性的定义,就是单元格的层次坐标。
2.相对层次坐标编辑
2.1 总结
报表中,常常需计算同期比、比上期之类的与时间相关的运算。而这些运算往往需用到下一行的数据减上一行数据,后一列数据减前一列数据等等。这种涉及到行间、列间的运算,称为位移运算,这种位移运算是通过相对层次坐标来表示的。
相对层次坐标定位规则如下:
说明:
Cellx:指目标单元格,是 Lk,Lk-1...L1;Tk,Tk-1...T1 的附属格。
Lk:指某个目标单元格 Cellx 的左父格,Lk 的次序是从远到近的,也就是从离当前格最远的左父格开始,也可以理解为从最高级别的分组格开始。
Tk:指某个目标单元格 Cellx 的上父格,Lk 的次序是从远到近的,也就是从离当前格最远的上父格开始,也可以理解为从最高级别的分组格开始。
lk:指左父格 LK 扩展后的次序,即扩展后的第几个单元格,如果不指定 lk 或 lk 为 0,则表示为当前表达式所在单元格所属的当前左父格 LK。
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]。
2.2 示例
2.21 示例一
在 A1,B1,C1,D1单元格中分别插入公式,公式具体值及效果如下所示:
2.22 示例二
在 A1 单元格中插入公式:range(5);在 B1 单元格中插入公式:A1[A1:-1],根据绝对层次坐标可知,B1 单元格也可以直接使用层次坐标公式:HIERARCHY(A1),其效果如下所示:
3.绝对层次坐标编辑
3.1 总结
某些报表中,可能需要对扩展后的单元格精确定位,然后参与运算,如上比较例子。然而在单元格扩展前,单元格会扩展出多少格子及格子所在的位置,在扩展前很难描述。因此,FineReport 中通过层次坐标的概念来对扩展后的单元格进行唯一性定义。
绝对层次坐标就是通过绝对位置来精确定位扩展后的单元格,定位规则如下:
说明:
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.2 示例
3.21 示例一
在 A1,B1,C1 单元格中分别插入公式,具体公式及效果如下图所示:
3.22 示例二
在 A1 单元格中插入公式 range(5);在 B1 单元格中插入公式 A1[A1:3],该公式作用是获取 A1 扩展后第三个单元格的值。其效果如下所示:
4. 层次坐标的使用及效果编辑
4.1 获取单元格扩展出来的所有值
如想获取单元格扩展出的所有值,可以使用=Cell[!0]来获取,如获取 A1 单元格所有扩展出的值,就可以在B1单元格中输入=A1[!0],其效果如下所示:
4.2 获取扩展单元格中满足条件的值
如想获取扩展单元格满足条件的值,可以使用=Cell[!0]{条件}获取,如获取 A1 单元格扩展出的不为 3 的值,则在 B1 单元格中输入=A1[!0]{A1!=3},其效果如下所示:
具体的应用可查看 条件汇总 章节。
4.3 获取单元格扩展出的最后一个值
想获取单元格扩展出的最后一个值,可以通过使用=Cell[Cell:!-1]获取,如获取 A1 单元格扩展出的最后一个值,则在 B1 单元格中输入=A1[A1:!-1],其效果如下所示:
具体的应用可查看 跨层累计 章节。
4.4 获取单元格扩展的位置
想获取单元格扩展后每个单元格的位置,可以通过使用=&Cell获取,如获取 A1 单元格扩展出每个值的位置,则在 B1 单元格中输入=&A1,其效果如下所示:
具体的使用可查看 序号 章节。
注:层次坐标在启用行式引擎报表中会失效。
动态格间运算在线视频请查看【动态格间运算】