动态排名

  • 文档创建者:zsh331
  • 编辑次数:9次
  • 最近更新:Kevin-s 于 2019-10-15
  • 1. 描述

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

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

    2. 解决方案

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

    RANK(A,B,C)返回一个数在一个数组中的秩(如果把这个数组排序,该数的秩即为它在数组中的序号

    参数说明:

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

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

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

    3. 示例

    3.1 内置数据集

    新建模板,添加内置数据集,如下所示:

    3.2 模板设置

    将字段拖入对应的单元格中,模板设置如下:

    给 C2 单元格添加“数字控件”

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

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

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

    image.png

    若 B2,C2 为字符串,则在 D2 输入公式=B2+C2+0,则可解决排名乱码问题

    4. 保存预览

    保存模板,选择填报预览。

    分别在 C2 单元格中输入不同的数值,E2 单元格的排名值随着总分的变化而动态变化,效果如上图。

    5. 已完成模板

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

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


    附件列表


    主题: 报表设计
    • 有帮助
    • 没帮助
    • 只是浏览