在进行报表设计时,单元格尚未进行扩展,但是其它某些单元格的表达式往往需要对这个单元格扩展后的单元格进行精确定位并运算。
例12.3.2-1:
月份 |
产值 |
A2(月份) |
B2 |
其中 三月份产值为: |
B3 |
扩展后:
月份 |
产值 |
1月 |
|
2月 |
|
3月 |
|
4月 |
|
5月 |
|
6月 |
|
7月 |
|
8月 |
|
其中 三月份产值为: |
需要定位到3月份对应的产值并返回 |
对单元格B3来说,需要从B2扩展出来的单元格中找到对应月份为3月的格子然后返回其值。
然而B2能扩展出几个格子以及每个格子在什么位置,在扩展前很难描述,因此,为了避免混淆,应该对扩展后的每个单元格进行唯一性定义,这就是单元格的层次坐标。层次坐标是用于唯一描述(精确定位)扩展后的每一个单元格的表达式。
层次坐标的运算结果返回目标单元格。如果层次坐标能够定位到一个单元格,那么返回该单元格的值,如果定位到多个单元格,那么返回这些单元格中的第一个单元格的值。
表达式规则:
说明:
a)
为Cellx的左主格,
为左主格扩展后的次序,即扩展后的第几个单元格,如果不指定
或者
为0,则表示为当前表达式所在单元格所属的当前左主格,Cellx为目标单元格,应该为
,
…
的附属单元格。与之类似,Tk为Cellx的上主格,tk为上主格扩展后的次序。
b) 如果只有上主格,没有左主格,分号不能省略,即应该写成:
Cellx [;Tk:tk, Tk-1: tk-1,……T1: t1]
如果只有左主格,没有上主格,分号可以省略,即可以写成:
Cellx [Lk:lk, Lk-1:lk-1,……L1:l1 ]
c)
与Tk的次序是从远到近的,也就是说越上级的主格越靠前。而找到层次坐标所表示单元格的次序是从最上级的主格开始。
如:
C1[A1:2,B1:1]找C1的次序是:先找单元格A1展开后的第2格,再找第二个A1下属的B1单元格扩展出来的第一个B1,然后找到和该B1对应的C1。
d) 完整的层次坐标表达式应该包括Cellx的所有主格,层次坐标与写在哪个单元格中无关。
例12.3.2-2:
例12.3.2-3: