小Y学excel:生成永不重复的序列号,你要知道这个方法!

2019-06-27 00:00:15 0 3

这天不算忙,我处理完手头的工作,看了一点专业书籍。


小Y跑到我身边说:张老师,有没有什么方法,能够生成不重复的序列号啊?


你看咱们的产品,能不能跟人一样,有个“身份证”呢?每产出一个合格的产品,我们就给他一个序列号,这样,如果在后续的过程中出了问题,我们就能按照这个“身份证号码”来查找原因和进行追责了。


她说完,意味深长的看着我,好像突然有这个重大发现似的。


我说:有啊,不重复的序列号,没有别的,那就是时间戳啊。时间是一直向前的,而且永远不会重复。


小Y将信将疑的看着我,说:时间戳,不会包装完一个,就写下时间吧?


我说:当然不是,他是以一个序列号的形式存在的,这个序列号是跟时间相关的。


说完,我就直接举例给她看。


在任意单元格,输入1,然后更改格式为日期型,你会发现时间变成了1900-1-1,如果按下ctrl+shift+;键,你会发现输入了当前的时间,改变单元格的格式为数值型,你会发现他们变成了小数。这说明什么问题呢?说你时间在Excel里是从1900年1月1日开始的一个序列,本质上也是数值型的数据,是可以直接进行四则运算的。利用这个特性,我们就可以用函数对这个序列进行下加工,成为我们需要的序列号。



小Y听说这个想法可行,立马两眼放光,敦促道:“老师你快操作下嘛,我看看怎么操作?”

我先在Excel里输入了如下字段,然后跟小Y 说我的思路。



时间戳:这个单元格只要被编辑一次,就会记录这个单元格最后的编辑时间。


组别:如果追责的话,肯定是要责任到人的,是那个班组的,一定要通过记录查出来。


序列号:就是把这个时间戳放大到一定的倍数,比如10000倍,为什么要把他放大呢?日期是一天才会变化的,只有时间才是随时在变,所以,如果需要的序列很多,当然要用时间的序列,而不是日期的序列。然后用截断函数int取整就行啦。


公式一看就明白了:

=IF(C2<>"","NO"&" "&INT(C2*100000),"")

这个函数的意思就是,如果时间戳的单元格不等于空,就把NO连接一个空格,再连接时间戳单元格的值放大10000倍。这样,一个序列就完成了。

看演示:



小Y说,但是这个时间戳怎么实现下拉的呢?


我笑着说,问道点子上了,这里有个小窍门,是易失性函数now和数据有效性的结合。


在任意单元格输入函数=now(),然后设置数据有效性,允许选择序列,来源选择刚才设置now函数的单元格。经过这样的设置,当我们选择一个时间点的时候,now函数就会自动的更新一次,我们我们怎么选,他都是随时更新的。



小Y若有所思的说:要是再进一步,把序列号变成二维码或者条码,直接印在成品上,那就更好了。


我笑着说,不错啊,有管理思维,就是把事情往前想,看好你哟。。。


小Y说:啊,这就是管理思维啊,说完,两人相视大笑起来。


欢迎继续关注我和徒弟小Y的故事。