1. 概述
1.1 问题描述
在对报表进行扩展后排序(按「牛奶」销量排序)之后,若直接使用单元格插入公式 seq() 或者 &cell 这两种方法获取序号,序号的顺序是乱序的,如何让它变成正常的排序呢?如下图所示:
1.2 解决思路
方法一:设置条件属性新值。
方法二:设置公式形态。
2. 示例
2.1 数据准备
新建普通报表,新建数据库查询 ds1,SQL 查询语句为:SELECT * FROM 销量。
2.2 报表设计
1)设计如下图所示表格,设置单元格 A2 左父格为 B2 ,并且插入公式:seq() , 生成序号。
设置单元格扩展方向:C1 为横向扩展,B2、C2 为纵向扩展。
2)未设置扩展后排序时,保存报表,点击「分页预览」,可以看到序号顺序正常,效果如下图所示:
2.3 设置扩展后排序
1)选中 B2 单元格,添加扩展后排序,公式为:C2{C1 = "牛奶"},即按照「牛奶」一列的销量值进行升序排列,步骤如下图所示:
2)保存报表,点击「分页预览」,表格已按「牛奶」列升序排序,但序号一列被打乱,如下图所示:
2.4 方法一(条件属性)
选中序号所在单元格 A2,删除原本的公式,添加「条件属性>新值」,选择公式类型,值可以是 seq(),row()-1,&cell 。
row()-1:row() 返回当前行位置,- 1 指的是当前行位置 -1,数值根据具体情况而定。
&cell:cell 指的是添加扩展后排序的单元格,本例为 B2 单元格。
由于任何情况下都需要生效,不需要添加判定条件。步骤如下图所示:
2.5 方法二(公式形态)
选中序号所在单元格 A2,选择「单元格属性>形态>公式形态」,值同样可以为 seq(),row()-1,&cell 。
注1:公式形态实际是将实际值与显示值转换,所以序号所在单元格本身必须有值。
注2:当序号所在单元格原本的值为 seq() 时,公式形态的值需要设置为 seq(1),否则序号会累计。
如下图所示:
2.6 效果预览
1)PC 端
两种方法的效果都和 2.2 节中正常排序效果一致。
2)移动端
均支持 App 端和 H5 端,效果如下图所示: