扩展后多列按先后排序问题(finereport)
inarray(b2,sortarray(uniquearray(b2[!0])))*power(10,len(max(e2[!0])))+e2这里面 power()里为啥是10 其他的数字 太小了不能正常排序,太小了也不能

FineReport 用户c7725280 发布于 2021-6-1 14:39
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
1
axingLv6专家互助
发布于2021-6-1 15:07(编辑于 2021-6-1 15:09)

为什么是10,因为我们要计算的数是10进制的,用10比较好理解。

回到我们最初的目的,要按数据扩展后多列按先后排序,原本是做不到的,因为扩展后排序只能根据一列数据来排序。

但是我们可以变通一下,新增一列,通过公式结合要排序的多列计算出一个新的列,再按新的列排序就可以了。

原理如下:

我们要先按A列排序,再按B列排序,因为A列和B列都是个位数,所以可以把这两列数看成是一个数的十位和个位,结合就得到了C列。扩展后排序的结果按照C列来排,就是先排A列再排B列。

image.png

同理,当A列和B列的最大值都是两位数,这时A列的数据就占据了C列数字的百位和千位,B列数据就占据了C列的个位和十位,得到的C列就是 A*10^2+B,得到下图中的结果。

image.png

如此类推。。。

最佳回答
0
snrtuemcLv8专家互助
发布于2021-6-1 14:40(编辑于 2021-6-1 14:53)

image.png

10是底数

-------------------------------------------

image.png

  • 用户c7725280 用户c7725280(提问者) 这我知道。。。我问的是为啥是10 。我试过 10上下的数 都可以排序成功 要是以小的如 3 或者 大的 如40 、30排序就不会成功
    2021-06-01 14:45 
  • snrtuemc snrtuemc 回复 用户c7725280(提问者) 文档里面有解释啊,看修改答案
    2021-06-01 14:53 
  • 用户c7725280 用户c7725280(提问者) 回复 snrtuemc 看了 没有解释为什么要这样做
    2021-06-01 14:56 
  • snrtuemc snrtuemc 回复 用户c7725280(提问者) 为了增大数据啊,过大或过小的话,会影响后面排序,你也讲了,10上下都可以,他只是去一个比较中间数10而已,你也可以9,8,11,12啊,没有规定一定要10,只要合理范围都行
    2021-06-01 14:59 
  • 用户c7725280 用户c7725280(提问者) 回复 snrtuemc 谢了!
    2021-06-01 15:13 
  • 3关注人数
  • 590浏览人数
  • 最后回答于:2021-6-1 15:09
    请选择关闭问题的原因
    确定 取消
    返回顶部