在很多场景中,都离不开“编号”、“序号”。这里主要来介绍一下如何用轻流的公式设置“自动生成编码”。

一、基础的递增实例

CONCAT(“RN”,RIGHT(CONCAT(“000”,RECNO()),4))。所得到的结果为:RN0001,RN0002,……
如何利用“公式”生成“唯一编码” - 图1
1:其中“CONCAT“函数的作用是将“RN”(固定文字前缀)和“RIGHT(CONCAT(“000”,RECNO()),4)”两个字符串联起来。
2:“RIGHT”函数的功能是获取到字符串中从右边起,指定数量的字符。
3:“RECNO”函数的功能是累计记录该应用被申请人打开的次数。
如何利用“公式”生成“唯一编码” - 图2
通过这个可以唯一而且非重复的对单据进行唯一标号,以防并发等问题造成的编号重复。虽然可能通过这种方式编号并不完全连续,但是在“防止重复”方面,这应该是最保险的方式。

二、添加时间戳

单纯的编号可能不能完全避免重复,因为上述4位编号只能生成9999个,超出就会重复。所以往往在编号中我们会增加一个时间戳,用“CURDATE”函数调取填写表单的当前日期。
所以我们把公式修改为:CONCAT(“RN”,CURDATE(),RIGHT(CONCAT(“000”,RECNO()),4))。
如何利用“公式”生成“唯一编码” - 图3
所得结果为:RN2018-08-130018
如何利用“公式”生成“唯一编码” - 图4

三、进一步进阶

上述案例中,编号当中会有日期的连接符“-”,下面我们通过日期截取函数,来进一步优化编号的设置,如:
CONCAT(“RN”,YEAR(CURDATE()),MONTH(CURDATE()),DAY(CURDATE()),RIGHT(CONCAT(“000”,RECNO()),4))
如何利用“公式”生成“唯一编码” - 图5
所得结果为:RN20188130019
如何利用“公式”生成“唯一编码” - 图6
可能还不是最完美的方案,因为上面2018813是8月13日,如果12月13日会显示为20181213,所以位数不能保持一致,所以我们再次通过RIGHT与CONCAT函数配合,给MONTH和DAY函数取出的“月”、“日”补零,
公式如下:
CONCAT(“RN”,YEAR(CURDATE()),RIGHT(CONCAT(“0”,MONTH(CURDATE())),2),RIGHT(CONCAT(“0”,DAY(CURDATE())),2),RIGHT(CONCAT(“000”,RECNO()),4))
所得结果为:RN201808130020。
如何利用“公式”生成“唯一编码” - 图7
经过上述几个步骤,就可以对“采购单”、“订购单”等单据进行完美编号了!
Tips:函数后内容必须用“()”括起来,注意关注括号的数量;函数内各变量间用“逗号”隔开,所有的公式中的函数注意使用英文半角字符哦~