双向扩展的单元格坐标
教学视频
概述
双向扩展的单元格坐标,指的是在交叉表中使用单元格坐标,比如下面的报表:
上面的报表模版当中,A2单元格和B1单元格向不同的方向扩展数据,交叉的B2单元格数据聚合方式采用的是求和,针对employee数据集的SALARY字段进行求和,而B2单元格绑定的employee数据集的SALARY字段内容又受其左父格A2和上父格B1限制,所以这是一个典型的交叉报表。
针对这个交叉表,我们在C2、D2、B3、B4单元格中填入了单元格坐标表达式,分别计算B2单元格的值,运行时效果如下图所示:
上图当中,我们用不同的颜色标出了部分表达式计算的结果值。
表达式分析
1.B2[A2:1;B1:-1]
B3单元格表达式为:B2[A2:1;B1:-1],该表达式要获取B2单元格的值,这个B2单元格的值在获取时首先要获取A2单元格展开后的第1个单元格对应的所有的B2单元格x,然后再根据当前表达式所在单元格B3的位置获取B1单元格展开后前一格对应的所有B2单元格y,最后取这个x、y的交集。
B3单元格表达式取值情况如下:
名称 | 取到的值 | 描述 |
---|---|---|
第一个B3单元格 | 空 | 坐标表达式B1:-1,表示根据当前表达式所在单元格B3的位置获取B1单元格展开后前一格,当前为第一列,前一格不存在,所以这里取到的值为空 |
第二个B3单元格 | 68368.00 | 坐标表达式A2:1对应的要获取A2单元格展开后的第1个单元格对应的所有的B2单元格,这里有两个值,分别是:68368.00和18708.00,然后坐标表达式B1:-1,表示根据当前表达式所在单元格B3的位置获取B1单元格展开后前一格下所有的B2单元格,这些B2单元格值为:68368.00、89537.00、111664.00......,接下来就是取它们的交集,很明显它们的交集为68368.00。 |
2.B2[A2:2;B1:+1]
B4单元格表达式为:B2[A2:2;B1:+1],该表达式要获取B2单元格的值,这个B2单元格的值在获取时首先要获取A2单元格展开后的第2个单元格对应的所有的B2单元格x,然后再根据当前表达式所在单元格B3的位置获取B1单元格展开后后一格对应的所有B2单元格y,最后取这个x、y的交集。
可以看到这个表达式与B3单元格表达式类似,具体取值大家可以参照B3单元格表达式理解,这里不再赘述。
3.B2[A2:-1;B1:1]
C2单元格表达式为:B2[A2:-1;B1:1],该表达式要获取B2单元格的值,这个B2单元格的值在获取时首先要根据当前表达式所在单元格C2的位置获取A2单元格展开后前一格下对应的所有的B2单元格x,然后再获取B1单元格展开后的第一个单元格下面的所有的B2单元格y,最后取这个x、y的交集。
C2单元格表达式取值情况分析
C2单元格展开后数量较多,这里选择第一个和第二个两个C2单元格进行分析
名称 | 取到的值 | 描述 |
---|---|---|
第一个C2单元格 | 空 | 坐标表达式A2:-1需要根据当前单元格位置取A2单元格的前一格,当前A2单元格就是展开后的第一个单元格,所以前一格不存在,所以这里取到的值就是空 |
第二个C2单元格 | 68368.00 | 坐标表达式A2:-1需要根据当前单元格位置取A2单元格的前一格,当前A2单元格是展开后的第二个单元格,所以它前一个A2单元格下对应的B2单元格的值有:68368.00和18708.00;然后根据表达式B1:1取当前单元格对应的B1单元格展开后的第一个B1单元格下对应的所有的B2单元格值,这些值有68368.00、89537.00、111664.00......,接下来就是取它们的交集,很明显它们的交集为68368.00。 |
4.B2[A2:+1;B1:2]
D2单元格表达式为:B2[A2:+1;B1:2],该表达式要获取B2单元格的值,这个B2单元格的值在获取时首先要根据当前表达式所在单元格C2的位置获取A2单元格展开后后一格下对应的所有的B2单元格x,然后再获取B1单元格展开后的第二个单元格下面的所有的B2单元格y,最后取这个x、y的交集。
看到这个表达式与C2单元格表达式类似,具体取值大家可以参照C2单元格表达式理解,这里不再赘述。