【制造业案例】根据日期生成单号,保存后自动累加,一个公式解决

懒人办公
懒人办公

创作者俱乐部成员

之前我们发过一期将单据保存为明细的帖子,有小伙伴问其中的单号是怎么根据当天日期自动累加的,下面就为大家详细讲解一下。

【案例描述】

其实像这样自动根据当前日期生成单号,并实现自动累的案例,在制造业经常用到,比如订货单、生产单、出库单等。

如下图,当前日期是“2023年11月17日”,当我们保存第一单的时候,单号为“20231117001”,保存第二单的时候,则变为“20231117002”,第三单“20231117003”……,依次累加。当我们选择别的日期时,也能达到同样的效果,即总是根据所选择日期已有的最大单号加1。

【操作效果】

【实现过程】

其实这个问题并不需要复杂的代码,只需要一个公式就可以解决。

公式:

=IFERROR(LOOKUP(1,0/(LEFT(出库明细!A2:A65535,8)=TEXT(F5,"yyyymmdd")),出库明细!A2:A65535)+1,TEXT(F5,"yyyymmdd")&"001")

公式说明:

先用LOOKUP在明细表A列中查找日期(F5单元格),如果能找到,就直接加1,如果不能找到,就直接用日期加上“001”。

公式详解:

  • TEXT(F5,"yyyymmdd")——将日期格式化,即将“2023年11月17”转换为“20231117”;

  • LEFT(出库明细!A2:A65535,8)=TEXT(F5,"yyyymmdd")——判断明细表A列中已有单号的前8位是否与格式化后的日期相同;

  • LOOKUP(1,0/(LEFT(出库明细!A2:A65535,8)=TEXT(F5,"yyyymmdd")),出库明细!A2:A65535)+1——如果日期相同,则返回该单号,并且+1,则得到新的单号;

  • IFERROR(LOOKUP(1,0/(LEFT(出库明细!A2:A65535,8)=TEXT(F5,"yyyymmdd")),出库明细!A2:A65535)+1,TEXT(F5,"yyyymmdd")&"001")——如果在明细表A列中找不到当前日期,则直接用当前日期格式化后连接上“001”,即作为当天的第一个单号。

公式固化:

为防止不小心动到公式,我们可以将公式写到JS代码中,即使动到了,也可以在点击清空按钮的时候重新自动输入公式。

Range("k3").Value2 = "=IFERROR(LOOKUP(1,0/(LEFT(出库明细!A2:A65535,8)=TEXT(F5,\"yyyymmdd\")),出库明细!A2:A65535)+1,TEXT(F5,\"yyyymmdd\")&\"001\")"

当然,这样的功能必须要配合代码使用,因为单纯的公式,是不能将自身产生的结果保存下来的,只有将上一个单号保存到明细表中,才能实现下一个单号的累加,所以我们需要一段保存代码。

📌

function 保存出库单(){

n1 = Range("c18").End(3).Row //物品信息最后行号

let sh = Sheets("出库明细") //将出库明细表定义为sh

n2 = sh.Range("A65535").End(3).Row + 1 //获取出库明细表最后一行的下一行号

n3 = n2+n1-7 //得到出库明细最后一行加上物品行数之后的行号

sh.Range("a" + n2+":a"+n3).Value2 = Range("k3").Value2 //单号

sh.Range("b" + n2+":b"+n3).Value2 = Range("f5").Value2 //日期

Range("c7:k"+n1).Copy() //复制物品信息

sh.Range("c" + n2).PasteSpecial(xlPasteValues) //粘贴物品信息

sh.Range("L" + n2+":L"+n3).Value2 = Range("c4").Value2 //供应商

sh.Range("m" + n2+":m"+n3).Value2 = Range("c5").Value2 //供应商联系人

sh.Range("n" + n2+":n"+n3).Value2 = Range("k5").Value2 //经办人

出库单清空()

MsgBox("保存成功!")

}

【素材下载】

https://kdocs.cn/l/ctI21tz6E5uO

贵州省
浏览 2738
6
46
分享
46 +1
44
6 +1
全部评论 44
 
企业用户_573845073
存在漏洞
· 海南省
回复
 
大美涵吖
很实用
· 河北省
回复
 
王萍
感谢分享
· 陕西省
回复
 
辛德瑞拉
有用
· 江西省
回复
 
浅夏℡
感谢🙏
· 江苏省
回复
 
水墨染青花
· 四川省
回复
 
A.襄垣大地保险荣玲玉
好用,感谢
· 山西省
回复
 
李大龙``
很好用,很棒
· 山东省
回复
 
回眸一笑・_・ノ百妹疯
感谢老师分享。谢谢
· 云南省
回复
 
WPS_1701059801
实用
· 广西
回复
 
豪子
不错不错,牛逼
· 陕西省
回复
 
陈阿斗。
厉害又学到了
· 辽宁省
回复
 
今非昔比
对我很有帮助
· 广东省
回复
 
99*星星*缘
666很实用
· 青海省
回复
 
林
666想学下
· 浙江省
回复
 
佳
666
· 新疆
回复
 
        
666
· 江苏省
回复
 
新空气
感谢分享
· 云南省
回复
 
王齐海
很实用,值得学习!
· 江西省
回复
 
高伟
厉害,学习了
· 浙江省
回复