历史版本10 :动态排名 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 预期效果

一般情况下,排名都是通过 排名组内排名 的方式实现。

但有时,用户需实现:在填报模式下,根据输入值的不同来“动态改变”某一列值的排名情况功能时,上面的方法就无法满足了,预期效果如下图:

1.2 实现思路

通过报表内置的 rank() 函数来变换实现。

RANK(number,ref,order):返回一个数在一个数组中的秩。(如果把这个数组排序,该数的秩即为它在数组中的序号。)

参数说明:

number:所求秩的数(可以是 Boolean型,true=1,false=0

ref:可以是数组,引用,或一系列数,非实数的值被忽略处理(接受 Boolean 型,true=1,false=0

order:指定求秩的参数,非零为升序,零为降序

2. 示例编辑

2.1 准备数据

新建普通报表,新建内置数据集,新增两个字段为:「姓名」、「分数」,类型分别为「字符串」、「整数」。如下图所示:

1608030688300326.png

2.2 设计报表

将字段拖入对应的单元格中,设计表格如下图所示:

1)给 C2 单元格添加 数字控件

2)D2 单元格输入公式:B2+C2

3)E2 单元格输入公式:rank(D2, D2[!0], 0),其中 D2[!0] 表示 D2 扩展出来的所有单元格

注:其中 B2 ,C2 默认需为数字格式,才可实现排名,若 B2 ,C2 单元格为其他格式,则会出现下图情况:

image.png

此时在 D2 单元格输入公式 sum(B2+C2),则可解决排名乱码问题。

2.3 保存预览

1)PC端

保存模板,点击「填报预览」,效果同 1.1 节预期效果一致。

2)移动端

App 端和 H5 端均支持,效果如下图所示:

AC89CB3D-05C8-45CC-BBB4-951D684EC1D1.GIF

3. 已完成模板编辑

已完成模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Advanced\Cacuate_Between_Cells\动态排名.cpt

点击下载模板:动态排名.cpt