2、序号的实现方法
1人赞赏了该文章
4,132次浏览
编辑于2014年07月22日 11:49:16
列表序号、分组序号、组内序号、跨分组序号的实现方法
本文中使用的报表可在产品论坛帖中下载:【我要当学霸】扩展报表资料大礼包 à“6、扩展报表样例”。
一、列表序号 列表型报表一般会使用函数SELECT(…),把记录一条条的列出来,因而列表序号跟行号或列号基本一致。 例如以下报表:单元格B2写公式列出员工姓名:=SELECT(DEMO_员工, 姓名)单元格A2显示员工序号:=ROW()– 1 ,注意将其纵向父格设置为B2,即A2单元格时跟随其父格B2扩展的。
预览报表:
函数说明:ROW功能: 取得单元格所在行的行号。语法: ROW([cellExp])参数: cellExp 单元格表达式,缺省为当前单元格。返回值: 正整数。示例: 在第三行单元格中写入ROW(),返回值为3,如果第三行存在纵向扩展格,则行号依次改变。
二、分组序号 分组型报表一般会使用函数GROUP(…),按某个或某几个字段分组,并为每个分组提供汇总计算。 例如以下报表:单元格B2写公式列出员工姓名:=GROUP(DEMO_地区销售额, 产品, False)单元格A2显示员工序号:=EXINDEX(B2),注意将其纵向父格设置为B2,即A2单元格时跟随其父格B2扩展的。
预览报表:
函数说明:EXINDEX功能: 层次坐标的逆运算,获得当前单元格所属的某父格在所有扩展出来的格子中排第几。语法: EXINDEX([fatherCell[,forefatherCell]])参数: fatherCell 当前单元格的某父格名称,如果缺省则代表直系父格(纵横方向由当前单元格确定); forefatherCell 当前单元格的某祖先格名称,如果缺省则代表fatherCell的直系父格。此参数不为空时会递归计算,运算效率较差。示例: 假设D1是当前格,A1是B1的父格,B1是C1的父格,C1是D1的父格。 EXINDEX() 表示计算C1在所有B1扩展出来的“C1”中的顺序号;效果等同于EXINDEX(C1)、EXINDEX(,B1)和EXINDEX(C1,B1),但效率最高。 EXINDEX(,A1)表示计算C1在所有A1扩展出来的“C1”中的顺序号,等于在当前B1中的C1顺序号加之前B1中的所有C1数;用于计算大分组内的序号。 EXINDEX(,V0()) 表示计算C1在所有“C1”中的顺序号。
三、组内序号 组内序号指分组内记录的序号,例如以下报表:
预览结果:
四、跨分组序号 跨分组序号顾名思义,既不是分组序号,也非分组内序号,而是跨越多个分组的序号。 例如以下报表:单元格F2写公式:=GROUP(合同档案, 案卷号, False);单元格A5写公式按照资料大类分组:=GROUP(合同档案, 资料大类, False,, 大类编码),其父格设为F2;单元格D2列出分组内的资料名称:=SELECT(合同档案, 资料名称, False,, 起始页);单元格B5写公式:=-ROW(),其父格设为D5;单元格C5写公式:=RANK(B5,EXS(B5, A(F2)));
预览报表:
本文中使用的报表可在产品论坛帖中下载:【我要当学霸】扩展报表资料大礼包 à“6、扩展报表样例”。
一、列表序号 列表型报表一般会使用函数SELECT(…),把记录一条条的列出来,因而列表序号跟行号或列号基本一致。 例如以下报表:单元格B2写公式列出员工姓名:=SELECT(DEMO_员工, 姓名)单元格A2显示员工序号:=ROW()– 1 ,注意将其纵向父格设置为B2,即A2单元格时跟随其父格B2扩展的。
预览报表:
函数说明:ROW功能: 取得单元格所在行的行号。语法: ROW([cellExp])参数: cellExp 单元格表达式,缺省为当前单元格。返回值: 正整数。示例: 在第三行单元格中写入ROW(),返回值为3,如果第三行存在纵向扩展格,则行号依次改变。
二、分组序号 分组型报表一般会使用函数GROUP(…),按某个或某几个字段分组,并为每个分组提供汇总计算。 例如以下报表:单元格B2写公式列出员工姓名:=GROUP(DEMO_地区销售额, 产品, False)单元格A2显示员工序号:=EXINDEX(B2),注意将其纵向父格设置为B2,即A2单元格时跟随其父格B2扩展的。
预览报表:
函数说明:EXINDEX功能: 层次坐标的逆运算,获得当前单元格所属的某父格在所有扩展出来的格子中排第几。语法: EXINDEX([fatherCell[,forefatherCell]])参数: fatherCell 当前单元格的某父格名称,如果缺省则代表直系父格(纵横方向由当前单元格确定); forefatherCell 当前单元格的某祖先格名称,如果缺省则代表fatherCell的直系父格。此参数不为空时会递归计算,运算效率较差。示例: 假设D1是当前格,A1是B1的父格,B1是C1的父格,C1是D1的父格。 EXINDEX() 表示计算C1在所有B1扩展出来的“C1”中的顺序号;效果等同于EXINDEX(C1)、EXINDEX(,B1)和EXINDEX(C1,B1),但效率最高。 EXINDEX(,A1)表示计算C1在所有A1扩展出来的“C1”中的顺序号,等于在当前B1中的C1顺序号加之前B1中的所有C1数;用于计算大分组内的序号。 EXINDEX(,V0()) 表示计算C1在所有“C1”中的顺序号。
三、组内序号 组内序号指分组内记录的序号,例如以下报表:
预览结果:
四、跨分组序号 跨分组序号顾名思义,既不是分组序号,也非分组内序号,而是跨越多个分组的序号。 例如以下报表:单元格F2写公式:=GROUP(合同档案, 案卷号, False);单元格A5写公式按照资料大类分组:=GROUP(合同档案, 资料大类, False,, 大类编码),其父格设为F2;单元格D2列出分组内的资料名称:=SELECT(合同档案, 资料名称, False,, 起始页);单元格B5写公式:=-ROW(),其父格设为D5;单元格C5写公式:=RANK(B5,EXS(B5, A(F2)));
预览报表:
列表序号.JPG(155.04KB)
列表预览.JPG(68.78KB)
跨分组序号预览.jpg(185.17KB)
跨分组序号.jpg(74.19KB)
分组序号预览.jpg(61.66KB)
组内序号.JPG(49.74KB)
组内序号预览.jpg(48.26KB)
分组序号.JPG(147.14KB)
推荐阅读