交叉浮动显示排名

1630
0

Bryce 小试身手Lv3

发表于2022-8-23 16:12

楼主
本帖最后由 Bryce 于 2022-8-28 21:26 编辑

需求场景:
        在制作报表中经常会用到交叉浮动的表格,能够清晰的进行交叉维度之间的数据展示,交叉部分的指标数据既向下浮动,也向右浮动,如果我们想通过旁边加上一列来显示排名的方式对这样的数据进行全数据排名、列排名的话,该如何去实现呢?

最终效果:

1.全数据排名
      以上为例,全数据排名就是显示交叉浮动出来的所有数据的排名,GRID1.B2$$可以以一个数组的形式拿到B2这个表元浮动出的所有数据,再用rank函数来排序就行了,用GRID1.B2$$.rank(GRID1.B2)来显示排名。这样就可以显示浮动出的所有数据的排名,例如我这里共有31*4=124条数据,排名从1排到124。

2.列排名
      但其实在日常的需求中,我们之所以会设计交叉浮动就是因为我们需要对不同维度的数据来进行分析,所以对浮动出的每列都进行单独的排序这样的场景更常见。实现步骤如下
      step1:根据全数据排名的经验,我们可以用GRID1.B2$$把浮动出的所有数据以一个一维数组的形式拿到。
      step2:接下来我们需要用split函数将这个数组分隔成多维数组,例如[1,2,3,4,5,6,7,8].split(4)得到[[1,2,3,4],[5,6,7,8]],这样可以以数组的形式将每一列分隔开,通过取出多维中的一维数组的方法单独将每一列依次取出,来进行数据在这个数组中的排名,这里split的参数就是向下浮动的行数,用GRID1.A2$$.length表示,这样GRID1.B2$$.split(GRID1.A2$$.length)就拿到了分隔后的多维数组,对数组函数不熟悉可以参考一下https://bbs.esensoft.com/thread-133624-1-1.html
       step3:接下来只需要用[0]、[1]......来取就好了,因为向右浮动出的列是固定的,所以这里根据实际设计写个公式就可以了,以这个例子为例,用col()/2-1就可以达到0、1、2...的效果。

       step4:做完这些就只剩最后一步了,找到数据在对应数组中的排名,用rank函数排序,GRID1.B2$$.split(GRID1.A2$$.length)[col()/2-1].rank(self.leftcell)












最近看过此主题的会员

MYoung

一一

esen_4Y3L5ADO80

0个回答

只看楼主

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号