关于几个数组的函数

我目前知道的有关数组的函数有这么几个:

一个是split

SPLIT(String1,String2):返回由String2分割String1组成的字符串数组。

一个是array

ARRAY(arg1,arg2...):返回一个由arg1,arg2,...组成的数组.arg1,arg2,...:字符串或者数字。

还有一个是直接用ds1.select或者group

我搞不懂它们的区别

把它们都放在单元格里,显示出来的效果都是一样的,都是一长串字符串

现在拿我的例子说:

我的ds1里有个字段叫年度,年度里包含了从2010到2020的重复数据

image.png

image.png

现在我是想做一个下拉框,下拉读取ds1中年度的数据,如果年度中不含今年,下拉框就加上今年,如果下拉框已包含今年,就不需要加今年了。现在ds1里只有2010-2020,不包含year(now)2021,所以就得加上2021,最终以倒序加载到下拉框中,2021,2020,2019……

下拉框的数据字典怎么弄?

我选择的公式:split(year(now())+","+JOINARRAY(ds1.group(年度,true,false),","),",")

可是出现的结果是这样的:

image.png image.png

非常奇怪的是,我把上面那个公式放到单元格里,显示的是2021到2010的倒序字符串。

我感到这个问题很奇葩,不知大家有什么好办法调整好,要求代码最精干,最简短


FineReport nhb2318 发布于 2021-1-6 10:55
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
nhb2318Lv4初级互助
发布于2021-1-6 20:47

我试了好多,都不行,只有最后一个可以,记录一下:

REVERSEARRAY(ADD2ARRAY(ds1.group(年度),year(now())))       不行

REVERSEARRAY(SORTARRAY(ADD2ARRAY(ds1.group(年度),year(now()))))      不行

REVERSEARRAY(ADD2ARRAY(ds1.group(年度,true,false),year(now())))      不行

REVERSEARRAY(SORTARRAY(ADD2ARRAY(ds1.group(年度,true,false),year(now()))))      不行

REVERSEARRAY(SORTARRAY(UNIQUEARRAY(ADD2ARRAY(ds1.select(年度,true,false),year(now())))))      不行

REVERSEARRAY(SORTARRAY(split(year(now())+","+JOINARRAY(ds1.group(年度,true,false),","),",")))         行

REVERSEARRAY(SORTARRAY(split(year(now())+","+JOINARRAY(ds1.group(年度),","),",")))         也行


SORTARRAY必须加,必须用split,add2array添加不行


最佳回答
0
huyajunLv6初级互助
发布于2021-1-6 10:58(编辑于 2021-1-6 10:59)

你去下载一个年份日期插件,这个看起来方便image.pngimage.png

  • nhb2318 nhb2318(提问者) 你这个貌似一个好东西,那能不能根据数据库设置灰色呢?比如说数据库里有2015,2016,2017,2019,2020,那么2015以前和2018年就不能选
    2021-01-06 11:39 
  • huyajun huyajun 回复 nhb2318(提问者) 可以限制起始日期年份和结束日期年份,但是好像不能再中间限制某特殊的年份
    2021-01-06 16:55 
最佳回答
0
孤陌Lv6资深互助
发布于2021-1-6 10:59(编辑于 2021-1-6 11:04)

其实最简单的 直接给数组加上今年的然后排序就好了 你不要放在外面加 上当年的 SORTARRAY(ds1.group(年度,true,false))公式排序

最佳回答
0
张洪威Lv6高级互助
发布于2021-1-6 11:00

REVERSEARRAY(SORTARRAY(UNIQUEARRAY(ADD2ARRAY(range(2010,2020),year(now())))))

image.png

  • nhb2318 nhb2318(提问者) 这个当然不行呀,数据库里万一差几年呢,所以 不能指定2010-2020
    2021-01-06 11:24 
  • 张洪威 张洪威 回复 nhb2318(提问者) 我们又连不了你的数据库,肯定只能用range来弄几个假数据示例。。。range那部分替换成你数据库就行了,把这公式里面的几个数组函数会套用了就没问题。
    2021-01-06 11:27 
  • nhb2318 nhb2318(提问者) 回复 张洪威 你用range可以,但是换成ds1.select(年度)就不行了
    2021-01-06 19:20 
  • 3关注人数
  • 390浏览人数
  • 最后回答于:2021-1-6 20:47
    请选择关闭问题的原因
    确定 取消
    返回顶部