复杂报表添加行序号
需求背景
在制作复杂报表的时候,有时用户需要复杂报表像普通表格或者Excel一样在左侧显示行序号。在复杂报表里,通常会用格间计算公式=G_CELLCALCEXP()来实现。本文将按不同的需求场景来演示添加行序号的方法。
场景一:按数据行依次进行自增序号排序
【实现方式】:利用Excel函数ROW()实现。
行序号写法:=G_CELLCALCEXP(ROW()-1)
场景二:按维度分组,在组内依次进行自增序号排序(同一分组,序号不同)
【实现方式】:利用位移单元格来判断实现(当前行B列单元格值是否等于B列上一行单元格值)。
行序号写法:=G_CELLCALCEXP(IF(B{r}=B{-1},{c}{-1}+1,1))
场景三:按维度分组,按分组ID依次进行自增序号排序(同一分组,序号相同)
【实现方式】:利用位移单元格来判断实现(当前行B列单元格值是否等于B列上一行单元格值)。
行序号写法:=G_CELLCALCEXP(IF(ROW()=2,1,IF(B{r}=B{-1},{c}{-1},{c}{-1}+1)))
注意事项
-
场景二、三要注意,不能对格间计算公式中涉及的维度列设置合并单元格(即动态属性不能勾选分组),否则会出现不符合预期的序号结果。如果需要对维度列设置合并单元格的话,建议做法:复制该维度列,单元格动态属性不勾选分组,并设置隐藏该列,行序号公式引用隐藏列。
效果如下:
-
场景三里生成的重复行序号不能合并单元格展示,如果需要像维度列一样合并单元格,建议在视图里对数据进行排序并生成序号,在模板里直接使用序号字段。
-
行序号跟数据排序无关,排序请在视图里设置。