这天不算忙,我处理完手头的工作,看了一点专业书籍。
小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的故事。