5. 依赖与扩展
5.1 依赖
理解依赖能更进一步理解扩展。在单元格扩展时,会在报表中插入行、列,在插入的行列中与扩展格对应的单元格可以复制为可扩展单元格计算的结果,其他单元格需根据依赖关系进行处理。
单元格B1依赖于A1,则B1称为附属格,A1称为依赖格。
5.1.1 依赖方向
与扩展对应的依赖也分为水平,垂直两个方向。
- 行依赖
一个单元格依赖于其水平方向上的另一个单元格,称为行依赖。 - 列依赖
一个单元格依赖于其垂直方向上的另一个单元格,称为列依赖。
5.1.2 依赖规则
投影原则:
依赖格在依赖方向的投影必须覆盖附属格,如下图所示,A1和A2合并后的单元格横向投影覆盖B1、B2、C1等,纵向覆盖A3、A4等,所以B1、B2的行依赖可以是A1,A3、A4的列依赖可以是A1,但是B3、C3等的依赖不能是A1。
附属格的公式计算将在依赖格计算结果的基础上进行
如上图,因为B2行依赖于A2,C2行依赖于B2,所以结果中会表现出有层次的树状图;如下图所示:
不能通过不可扩展格传递依赖关系
如下图所示,D3的求值需要在C1的基础上,C1是横向扩展的,如果D2也是横向扩展,且依赖于C1,则D3可以依赖D2。
如果D2并不是横向扩展的,则需要D3直接依赖于C1,而不能依赖于D2。
5.1.3 设置方法
选中单元格,只需要修改“属性”中的“行依赖/列依赖”属性,一个单元格如果处在交叉表的交叉维,可以同时定义行依赖和列依赖,如下图所示:
5.2 扩展
当一个文本类型单元格的值定义为返回集合类型的公式时,并定义了扩展方向,那么这个单元格是一个可扩展单元格,也就是说它根据公式计算时的返回值会在报表数据区中插入若干行或者列。 单元格扩展出来的单元格,称为扩展格。
5.2.1 扩展方向
单元格的扩展方性包括不扩展、纵向扩展、横向扩展三种,缺省单元格扩展方向为不扩展。
5.2.2 扩展特性
一个单元格扩展,除了他本身被复制出多个格子,还会导致其它单元格的复制和拉伸。以纵向扩展为例,当一个单元格扩展时,它的水平方向的附属格(包括附属格的附属格)被复制;其他与被扩展格在相同行的格被拉伸。
5.2.3 扩展规则
单元格进行扩展,需要遵从以下规则:
- 只有定义为文本类型的单元格可以扩展;
- 列依赖中的依赖格必须是横向扩展单元格,行依赖中的依赖格必须是纵向扩展单元格;
- 所有定义为可扩展的单元格,包括横向扩展和纵向扩展,它的值必须定义成返回集合类型的公式;
交叉维不能是可扩展单元格;
单元格扩展的影响:
- 它的依赖格被拉伸;
- 它的(投影覆盖当前格的同级格、依赖格的同级格)同级格被拉伸;
它的附属格被复制。
对扩展规则的描述,如下图所示:
- B1定义为水平扩展;
- B2定义为不扩展,列依赖于B1;
- B3定义为不扩展,列依赖于B1;
- C3定义为横向扩展,列依赖于B1;
- C4定义为不扩展,列依赖于C3。 根据上面的单元格扩展影响,B1扩展是B2,B3,C3,C4都被复制;C3扩展时,它的列依赖格B1被拉伸,兄弟格B2被拉伸,B3没有影响,C4被复制。
5.2.4 设置方法
选中文本类型单元格,只需要修改“扩展”属性,如下图所示: