当单元格的数据值表达式为集合表达式时,该单元格可以设置为可扩展单元格。可以为扩展单元格设置一个扩展方向,扩展可以有横纵两个方向,即横向扩展和纵向扩展,但一个扩展格同时只能有一个扩展方向。
纵向扩展:当可扩展单元格的扩展方向为纵向时,该单元格进行的扩展称为纵向扩展。此时该单元格会纵向进行复制,复制出的单元格的数据值依次为表达式的结果数据值,表达式返回几个值,单元格就复制几个。 复制出来的新单元格的所有属性都引用被复制单元格的属性。
横向扩展:当可扩展单元格的扩展方向为横向时,该单元格进行的扩展称为横向扩展。此时该单元格会横向进行复制,复制出的单元格的数据值依次为表达式的结果数据值,表达式返回几个值,单元格就复制几个。 复制出来的新单元格的所有属性都引用被复制单元格的属性。
自动跟随:自动跟随扩展是一种自动跟随父格的扩展行为的一种扩展;如果这个单元格的元素数量少于父格的元素数量,则自动填充空值,使得本身的元素数量与父格一致;如果本身的元素数量大于父格的元素数量,则将多余的元素将不显示。这样确保子格与父格的元素数量、扩展方式一致,使得表格整齐。
不可扩展:不可扩展是指单元格不依赖于数值的数量进行复制,所有的数值都填充到当前的单元格中的一种方式。
主格和附属格:单元格进行扩展的过程中,缺省情况下,相对于其右(下)边的单元格而言,扩展格是主动复制的,被称为其它格(其右/下的格)的主格,而其右(下)的单元格是被动跟随复制的,被称为扩展格的附属格或子格。主格和附属格是相对的概念,即某格是另一格的主格或附属格,不存在单独的主格和附属格,显然只有扩展格才能是其它格的主格!
要注意的是,在缺省情况下,扩展格左(上)的格并不是其附属格,只有右(下)的格才是其附属格。
某个单元格的主格属性可以人为被改变。
左主格和上主格:单元格进行纵向扩展时,我们又称其为其它格(其右/下的格)的左主格,而横向扩展时则称为上主格。一个单元格可以既有左主格又有上主格。
特别地,某个单元格的左主格或者上主格属性可以人为的被改变,即可以人为的把某个纵向扩展格右边的单元格设为他的左主格,或者把某个横向扩展格下方的单元格设为他的上主格。
直接主格和直接附属格:单元格进行多层扩展时,若主格A的附属格B不再有任何同方向的主格是该主格A的附属格,则称B为A在该方向上的直接附属格,也称为一级附属格;反之,A称为B的直接主格,也称为一级主格
缺省主格认定 :单元格横向扩展时,上方横向扩展单元格缺省为它的上主格,下方单元格缺省为它的附属格;单元格纵向扩展时,左边纵向扩展单元格缺省为它的左主格,右边单元格缺省为它的附属格;
除了前面提到的缺省情况外,我们允许人为地改变单元格的主格。可以将某个单元格的左主格设置成某个纵向扩展格、上主格设置的某个横向扩展格,左主格和上主格是分别设置的。
层次坐标:层次坐标是用于唯一描述(精确定位)扩展后的每一个单元格的一种定位表达式。层次坐标的运算结果返回目标单元格。如果层次坐标能够定位到一个单元格,那么返回该单元格的值,如果定位到多个单元格,那么返回这些单元格中的第一个单元格的值。
表达式规则:
说明:
位移坐标:位移坐标是用来描述目标单元格和当前格之间的位置关系的一种定位表达式。有了层次坐标后,很多时候并不够用,因为大部分时候报表设计者并不知道目标单元格的具体位置,例如报表中常常需要计算同期比、比上期之类的与时间相关的运算,而这些运算往往需要用到下一行的数据减上一行数据,后一列数据减前一列数据,等等,这种涉及到相邻n行或者n列的行间、列间的运算,称为位移运算相关的表达式称为位移表达式。
表达式规则:
说明:
坐标缺省表示法:由于层次坐标和位移坐标的表示很烦琐,而大部分时候对于单元格的定位是和当前格的位置有关系的,一般是指当前格的主格或者和当前格有着相同主格的单元格,此时可以采用缺省的写法。
缺省情况下,如果目标单元格的某个主格Lk和当前单元格的主格相同,那么层次坐标(位移坐标)中该主格可以不写。