1. 概念编辑
1.1 应用场景
当数据同时由纵向扩展和横向扩展而来,也就是 交叉表 的情况下,层次坐标该怎么写呢?
相对层次坐标
绝对层次坐标
1.2 公式写法
双向扩展场景下,不管是相对层次坐标还是绝对层次坐标,都要使用纵向和横向的组合写法,且要遵循先纵向后横向的原则。
层次坐标类型 | 公式写法 | 计算结果 | 参数解释 |
---|---|---|---|
相对层次坐标 | Cellx[Celly:-k ;Cellz:p] | 第 p 列相对偏移 -k | Cellx:横纵向同时扩展出来的交叉数据单元格 Celly:纵向扩展单元格,Cellx 的左父格 Cellz:横向扩展单元格,Cellx 的上父格 k:数字 p:数字 |
Cellx[Celly:+k ;Cellz:p] | 第 p 列相对偏移 +k | ||
Cellx[Celly:p ;Cellz:-k] | 第 p 行相对偏移 -k | ||
Cellx[Celly:p ;Cellz:+k] | 第 p 行相对偏移 +k | ||
绝对层次坐标 | Cellx[Celly:k ;Cellz:p] | 第 k 行第 p 列交叉处的值 | |
Cellx[Celly:k ;Cellz:!-p] | 第 k 行倒数第 p 列交叉处的值 |
2. 新建示例模板编辑
此处我们新建一个交叉报表,用于下面演示双向扩展时相对层次坐标和绝对层次坐标的写法。
2.1 准备数据
新建数据集 ds1,SQL 语句为:SELECT * FROM 销量,如下图所示:
2.2 设计表格
将「产品」字段拖到 B1 单元格,设置为横向扩展。
将「销售员」字段拖到 A2 单元格,设置为纵向扩展。
将「销量」字段拖到 B2 单元格,设置为不扩展,此时 B2 单元格就是根据 B1 和 A2 双向扩展出来的数据。
2.3 效果预览
交叉表设计好后,分页预览看下效果:
3. 相对层次坐标写法编辑
按照下图所示在相应单元格中填写相对层次坐标的公式:
实际计算结果如下图所示:
下面给出每个层次坐标的解释:
所在单元格 | 公式 | 公式解析 | 最终效果 |
---|---|---|---|
C2 | B2[A2:-1 ;B1:1] | ;B1:1:横向绝对层次坐标,是为了锁定第一列 A2:-1:纵向相对层次坐标,是为了实现纵向负偏移 | 第一列相对偏移 -1 |
D2 | B2[A2:+1 ;B1:2] | ;B1:2:横向绝对层次坐标,是为了锁定第二列 A2:+1:纵向相对层次坐标,是为了实现纵向正偏移 | 第二列相对偏移 +1 |
B3 | B2[A2:1 ;B1:-1] | A2:1:纵向绝对层次坐标,是为了锁定第一行 ;B1:-1:横向相对层次坐标,是为了实现横向负偏移 | 第一行相对偏移 -1 |
B4 | B2[A2:2 ;B1:+1] | A2:2:纵向绝对层次坐标,是为了锁定第二行 ;B1:+1:横向相对层次坐标,是为了实现横向正偏移 | 第二行相对偏移 +1 |
4. 绝对层次坐标写法编辑
按照下图所示在相应单元格中填写绝对层次坐标的公式,其中 B4~B6 都设置为不扩展,且左父格和上父格都设置为无。
实际计算结果如下图所示:
下面给出每个层次坐标的解释:
所在单元格 | 公式 | 公式解析 | 最终效果 |
---|---|---|---|
B4 | B2[A2:4 ;B1:2] | A2:4:纵向绝对层次坐标,锁定第四行 ;B1:2:横向绝对层次坐标,锁定第二列 | 返回第四行和第二列交叉处的值 |
B5 | B2[A2:6 ;B1:4] | A2:6:纵向绝对层次坐标,锁定第六行 ;B1:4:横向绝对层次坐标,锁定第四列 | 返回第六行和第四列交叉处的值 |
B6 | B2[A2:!-1 ;B1:!-1] | A2:!-1:纵向绝对层次坐标,锁定倒数第一行 ;B1:!-1:横向绝对层次坐标,锁定倒数第一列 | 返回倒数第一行和倒数第一列交叉处的值 |