求一个序号自动生成的公式,格式为“日期+序号”,当时间改变时,序号自动归一,在累加

请输入任务描述

FineReport 王国强 发布于 2019-7-2 10:10
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
firegunzxLv6高级互助
发布于2019-7-2 10:35(编辑于 2019-7-8 08:59)

可以通过公式生成:

下面是我的例子,ID规则是X开头+6位日期+3位流水

在A1单元格用sql取出当前日期的ID最大值,

然后在N2单元格里填入公式=seq()计算出序号,

然后在ID单元格里填入下面的公式

=if(len(A1)==0,"X" + format(today(), "yyMMdd")+right(CONCATENATE("00", N2), 3),left(A1,7)+right(CONCATENATE("00", TOINTEGER(right(A1,3))+N2), 3))


不用字母开头的话,公式改成

=if(len(A1)==0,format(today(), "yyMMdd")+right(CONCATENATE("00", N2), 3),left(A1,6)+right(CONCATENATE("00", TOINTEGER(right(A1,3))+N2), 3))


len(A1)==0    判断A1单元格是否有值,即按日期查询ID最大值,有就加1,没有就从1开始

format(today(), "yyMMdd")    取出当前日期,转化成6位,如190708

right(CONCATENATE("00", N2), 3)     计数当前行,并用0补位成3位流水码。

left(A1,6)    取出最大ID的前6位

right(CONCATENATE("00", TOINTEGER(right(A1,3))+N2), 3)  取出最大ID的流水号,加上数据行号生成新的流水号。


公式都有说明,在设计器公式窗口里。

image.png


  • 王国强 王国强(提问者) 大神能讲解一下公式吗
    2019-07-06 08:16 
  • firegunzx firegunzx 回复 王国强(提问者) LEN(args): 返回文本串中的字符数或者数组的长度。 需要注意的是:参数args为文本串时,空格也计为字符。 参数args为数组时,直接返回数组长度。 示例: LEN(\"Evermore software\")等于17。 LEN(\" \")等于1。 LEN([\'a\',\'b\'])等于2。
    2019-07-08 08:47 
  • firegunzx firegunzx 回复 王国强(提问者) IF(boolean,number1/string1,number2/string2):判断函数,boolean为true时返回第二个参数,为false时返回第三个。 boolean: 用于判断的布尔值,true或者false。 number1/string1: 第一个参数,如果boolean为ture,返回这个值。 number2/string2: 第二个参数,如果boolean为false,返回这个值。 示例: IF(true,2,8)等于2 IF(false,\"first\",\"second\")等于second IF(true,\"first\",7)等于first
    2019-07-08 08:47 
  • firegunzx firegunzx 回复 王国强(提问者) FORMAT(object,format) : 返回object的format格式。 object 需要被格式化对象,可以是String,数字,Object(常用的有Date, Time)。 format 格式化的样式。 示例 FORMAT(1234.5, \"#,##0.00\") => 1234.50 FORMAT(1234.5, \"#,##0\") => 1234 FORMAT(1234.5, \"¥#,##0.00\") => ¥1234.50 FORMAT(1.5, \"0%\") => 150% FORMAT(1.5, \"0.000%\") => 150.000% FORMAT(6789, \"##0.0E0\") => 6.789E3 FORMAT(6789, \"0.00E00\") => 6.79E03 FORMAT(date(2007,1,1), \"EEEEE, MMMMM dd, yyyy\") => 星期一,一月 01,2007 FORMAT(date(2007,1,13), \"MM/dd/yyyy\") => 01/13/2007 FORMAT(date(2007,1,13), \"M-d-yy\") => 1-13-07 FORMAT(time(16,23,56), \"h:mm:ss a\") => 4:23:56 下午
    2019-07-08 08:47 
  • firegunzx firegunzx 回复 王国强(提问者) TODAY():获取当前日期。 示例: 如果系统日期是2005年9月10日 则TODAY()等于2005-9-10。
    2019-07-08 08:48 
最佳回答
0
zsh331Lv8专家互助
发布于2019-7-2 10:39(编辑于 2019-7-2 10:40)

借用demo文件,当"地区"发生变化时,序号自动归一...

你把"地区字段"换成"日期字段"即可...


image.png


组内序号.cpt


最佳回答
0
Doctor_WeiLv7中级互助
发布于2019-7-2 10:53

我觉得吧,你没描述清除,你只是想要一个自增的序号,还是也考虑到

序号删除,或者添加后,再次改变,需要在原有的序号基础上再累加


最佳回答
0
先知Lv5见习互助
发布于2019-7-2 16:50

你是騙方案的嗎???

  • 4关注人数
  • 721浏览人数
  • 最后回答于:2019-7-8 08:59
    请选择关闭问题的原因
    确定 取消
    返回顶部