20.2 单元格函数
基于报表单元格间的关系来定义和求值的函数称为单元格函数。
理解单元格函数,有几个关键的概念需要首先清楚:
当前单元格:单元格函数的计算都和当前格相关,所谓当前单元格,就是这个函数定义所在的单元格。
目标单元格:大多数的单元格函数还有一个目标单元格的概念,表示的时希望引用的单元格,这个函数的结果就是这个目标单元格派生出来的一个或者多个单元格。
函数的定义是基于定义时的单元格关系,而运行是基于扩展后的单元格关系的。
Offset
函数说明:
获得当前单元格对应的依赖格相对于目标单元格的位移。
函数语法:
Offset(master)
参数说明:
名称 | 数据类型 | 说明 | 是否必需 |
---|---|---|---|
master | 字符串 | 当前单元格的某个目标单元格,形式为Excel方式表示的单元格位置,如:A1,C2,FF23 | 是 |
返回值: 位移量,整型值。 示例:
【注意】在例子中不可以将目标单元格理解为绝对位置的单元格,即offset(‘c2’)不能理解为距离c2单元格的位移,而是在扩展复制中出现该单元格的扩展中,目标单元格最后一次扩展复制而出的第一个单元格,比如d8的offset(‘c2’)要参考的是c7,而d8的依赖格为c8,它相对于c7位移为1。
Cell
函数说明:
根据指定的偏移量,获得符合条件的目标单元格扩展出的所有的单元格。
函数语法:
Cell(target[,filter[,horizontal_offset[,virtical_offset]]])
参数说明:
名称 | 数据类型 | 说明 | 是否必需 |
---|---|---|---|
target | 字符串 | 想要取值的目标单元格 | 是 |
filter | 布尔表达式 | 过滤条件,用{}包围 | 否 |
horizontal_offset | 偏移量表达式 | 水平方向的偏移量表达式 | 否 |
vertical_offset | 偏移量表达式 | 垂直方向的偏移量表达式 | 否 |
偏移量表达式
- 相对偏移 master[+/-relevant_offset]
- 绝对偏移 master[absolute_offset]
- 组合 A2[+1]b2[2]c2[-1]
- 偏移0 a2[+0],b2[-0]
- 绝对偏移量:数字前没有正负号标识,如:3
相对偏移量:数字前加正负号标识,如:+3或-3
返回值: 符合条件的目标单元格的集合。 示例:
【注意】以单元格d4使用cell(‘c2’,null,’a2[+1]b2[1]’)进行解释,在出现d4的扩展中,对应的a2的最后一次扩展出的是a2,首先进行a2[+1]到达a7,然后在a7的扩展中b2[1]即b2扩展出去的第一个为b10,目标单元格c2在偏移量得出结果b10的扩展中复制出的单元格,即返回c10 c11 c12。
以单元格d8的cell('c2',null,'b2[-1]c2[+1]')进行解释,在出现d8的扩展中,对应的b2的最后一次扩展是b7,首先进行b2[-1],而b7向上移动就脱离本次分组扩展了,所以进行到此返回null。
CellRef
函数说明:
简化的单元格引用,取得指定的目标单元格派生出来的、和当前单元格最近的第一个单元格。
函数语法:
Target
参数说明:
Target本身代表了期望取值的目标单元格。
返回值:
一个单元格。
示例:
取得A2单元格的值:
A2
CellRefGroup
函数说明:
简化的单元格引用,取得指定单元格在所在格依赖方向上的所有扩展单元格的集合
函数语法:
Target+
参数说明:
Target本身代表了期望取值的目标单元格。
返回值:
目标单元格的集合。
示例:
取得B3单元格扩展的数据的总和:
sum(B3+)
CellRefRange
函数说明:
简化的单元格引用,取得指定单元格在所在格依赖方向上指定对角线范围内的扩展单元格的集合。
函数语法:
TopLeftTarget:BottmRightTarget
参数说明:
TopLeftTarget 为区域的左上角单元格, BottomRightTarget为区域的右下角单元格。如果所在单元格与目标单元格区域存在共同的依赖关系,所有目标单元格应处在所在单元格的依赖范围内。
返回值:
目标单元格的集合
示例:
取得A2-C4范围内单元格(A2,A3,A4,B2,B3,B4,C2,C3,C4)值的总和:
sum(A2:C4)
CellValue
函数说明:
取得当前cell的值。注:一般用在单元格的“值”外的其他属性定义中。
函数语法:
CellValue()
返回值:
当前单元格的值。
Coordinate
函数说明:
根据指定的偏移量,获得符合条件的目标单元格扩展出的所有的单元格,用于数据回填。
函数语法:
coordinate (target[,filter[,horizontal_offset[,virtical_offset]]])
参数说明:
名称 | 数据类型 | 说明 | 是否必需 |
---|---|---|---|
target | 字符串 | 想要取值的目标单元格 | 是 |
filter | 布尔表达式 | 过滤条件,用{}包围 | 否 |
horizontal_offset | 偏移量表达式 | 水平方向的偏移量表达式 | 否 |
vertical_offset | 偏移量表达式 | 垂直方向的偏移量表达式 | 否 |
偏移量表达式
- 相对偏移 master[+/-relevant_offset]
- 绝对偏移 master[absolute_offset]
- 组合 A2[+1]b2[2]c2[-1]
- 偏移0 a2[+0],b2[-0]
- 绝对偏移量:数字前没有正负号标识,如:3
- 相对偏移量:数字前加正负号标识,如:+3或-3
- 返回值:
符合条件的目标单元格的集合。
MainCell
函数说明:
根据指定的偏移量,获得符合条件的目标单元格扩展出的所有的单元格,用于在子布局中取得主布局单元格的值。
函数语法:
maincell (target[,filter[,horizontal_offset[,virtical_offset]]])
参数说明:
名称 | 数据类型 | 说明 | 是否必需 |
---|---|---|---|
target | 字符串 | 想要取值的目标单元格 | 是 |
filter | 布尔表达式 | 过滤条件,用{}包围 | 否 |
horizontal_offset | 偏移量表达式 | 水平方向的偏移量表达式 | 否 |
vertical_offset | 偏移量表达式 | 垂直方向的偏移量表达式 | 否 |
偏移量表达式
- 相对偏移 master[+/-relevant_offset]
- 绝对偏移 master[absolute_offset]
- 组合 A2[+1]b2[2]c2[-1]
- 偏移0 a2[+0],b2[-0]
- 绝对偏移量:数字前没有正负号标识,如:3
- 相对偏移量:数字前加正负号标识,如:+3或-3
- 返回值:
符合条件的目标单元格的集合。
SheetCell
函数说明:
根据指定的偏移量,获得指定布局内的符合条件的目标单元格,用于多布局时,取得其它布局中单元格的值。
函数语法:
sheetcell (sheetid,target[,filter[,horizontal_offset[,virtical_offset]]])
参数说明:
名称 | 数据类型 | 说明 | 是否必需 |
---|---|---|---|
sheetid | 字符串 | 布局标识(布局ID) | 是 |
target | 字符串 | 想要取值的目标单元格 | 是 |
filter | 布尔表达式 | 过滤条件,用{}包围 | 否 |
horizontal_offset | 偏移量表达式 | 水平方向的偏移量表达式 | 否 |
vertical_offset | 偏移量表达式 | 垂直方向的偏移量表达式 | 否 |
偏移量表达式
- 绝对偏移 master[absolute_offset]
- 组合 A2[1]b2[2]c2[1]
- 绝对偏移量:数字前没有正负号标识,如:3
- 返回值:
符合条件的目标单元格的集合。
【注意】SheetCell公式不允许使用相对偏移量。
CoordinateRef
函数说明:
简化的单元格引用,取得指定的目标单元格派生出来的、和当前单元格最近的第一个单元格的坐标。仅限于填报逻辑主格中使用。
函数语法:
Target
参数说明:
Target本身代表了期望取值的目标单元格。
返回值:
一个单元格坐标。
示例:
取得A2单元格的值:
A2