案例

2021-10-10 Guide
  • 开发人员
  • 报表
About 15 min

# 明细表

绑定数据集单元格,设定聚合方式为列表(list)

# 错行分组

如下图设计器设置数据集单元格,自定义B2的左父格为A1

输出结果如下:

如果合并A1A2单元格,则不需要设定B2单元格的父格

# 交叉表

表头
A3, B3: 向下展开
C1, C2: 向右展开

指标
C3: 不展开,聚合方式为汇总
D3: 不展开,聚合方式为汇总, 由于默认D3的左父格为C3,所以需要修改其左父格为表头B3

调整列宽之后输出如下:

# 主从表

输出结果如下:

# 不同方向展开

A2: 向下展开
B2: 向右展开
C2: 父格设定为A2,聚合方式会count计数
B1: 不希望B1被B2拉伸,可以设定B2的上父格为无

输出结果:

# 统计计算

请参照表达式章节中单元格坐标

# 小计合计

报表模板如下:

  • 表头: 简单表头不做特殊处理
  • 数据集单元格:
    • A2: 合并A2和A3,A2内容为部门分组
    • B2: 学历分组
    • C2: 薪资求和
  • 统计表达式:
    • C3: 部门小计,表达式sum(C2)
      • 左父格配置: 左父格默认为B3 -> A2,因为每个部门统计一次,跟着部门展开不需要修改;
      • 上父格配置: 要对C2求和,上父格设置为与C2一致,C2的上父格为C1(简单文本单元格且没有扩展), 所以上父格可以设置为C1或者无
    • C4: 总计, 表达式sum(C2)
      • 上父格设定为无即可

输出结果:

# 环比

报表模板如下:

C2 - C2[B2@!-1]

C2[B2@!-1]取相对于当前单元格的 B2 单元格上一格(感叹号负值表示向上位移)的B2单元格所对应的 C2 单元格

# 同比

报表模版如下图所示:

在上面的模版当中,D2 单元格中首先取到与其同行的 C2 单元格的值,然后利用单元格坐标,先取到当前 D2 单元格所在行的 A2 单元格的上一条 A2 单元格记录(@-1表示坐标上移), 然后再取这个 A2 下对应的 C2 单元格,但由于其下 C2 单元格还是有多个,所以这里加了个条件B2==$B2, 这里的第一个 B2 表示当前单元格所在行对应的 B2 的值,$B2 表示坐标定位后 C2 单元格对应的 B2 单元格的值,条件就是他们俩要相等,实际上就是月份相等,这样就达到了我们要实现的同比的目的

关于$B2

在单元格名称前加$符号,表示取相对于目标单元格的单元格的值,多用在条件比较当中,比如上面的C2[A2@!-1]{B2==$B2},这里的$B2就是指取到的C2单元格对应的B2单元格的值。

首年填写空白

可以通过改写表达式

关于&标记的使用

在使用“&单元格名称”来标记目标单元格展开后的序号时,除上需要注意上面描述的内容外,还需要注意,取序号将以他们共同的父格为基准,如果他们有共同的父格,那么将以这个父格里目标单元格的数量来进行序号编排,这在之前视频教程介绍报表计算模型中,实现明细型主从报表,对从表数据进行编号时就有体现。

隐藏首年

可以通过配置D2条件属性配置, &A2==1, A2展开第一个元素对应的行高0

效果如下

# 累加

报表模板如下:

D2 单元格对应的表达式如下:

C2 + D2[A2@!-1]
1

按年分组累加

-- 新的月份展开坐标为1的时候重新累加
if (&B2 == 1) {
    return C2
} else {
    return C2 + D2[B2@!-1]
}
1
2
3
4
5
6

结果如下

# 上父格偏移

  • B2, B3 年、月数据集单元格,聚合方式为分组
  • B4: 指标汇总,设置改行任意列行高-1,可以隐藏该行
  • B5: 环比差值
    • 表达值单元格,内容为B4 - B4[ ;B3@!-1]
    • B4[ ;B3@!-1]: 仅设置上父格坐标,B3@!-1为以B3对相对单元格取展开之后当前对应的B3往左偏移1格内容
  • B6: B4开销的累加值
    • 表达式单元格,内容B6[;B3@!-1] + B4
    • B6[;B3@!-1]: 相对B3取自身的上一个值然后与当前列的B4开销相加

最终输出结果(为展示效果限定了月份值)

# 占比

用于统计C2数据列所有数据的总和

实例 说明
C2/sum(C2[]) 总占比
C2/sum(C2[A2, B2]) 按A1 + B1分类占比
C2/sum(C2[]{A2 == $A2 and B2 == $B2}) 按A2 + B2分类占比

报表模板如下:

结果

Tips

上面累加分母在取出分组对应单元格数组之后使用了sum()函数,具体函数相关介绍请参考函数章节

# 自定义分组

Last update: October 23, 2021 11:50