Excel货物进出仓日期冻结与仓储时长追踪方案问询
Excel货物进出仓追踪解决方案
一、自动生成入库日期(选择仓库后触发)
Excel公式无法直接生成静态固定日期,需通过VBA宏实现选择仓库后自动写入当日日期:
- 按
Alt + F11打开VBA编辑器 - 双击目标工作表(如Sheet1)打开代码窗口
- 粘贴以下事件代码:
Private Sub Worksheet_Change(ByVal Target As Range) ' 仓库列改为你的实际列号(例:仓库在D列则写4),入库日期列改为你的目标列(例:M列) If Target.Column = 1 And Target.Cells.Count = 1 Then Application.EnableEvents = False If Target.Value <> "" And Cells(Target.Row, "M").Value = "" Then Cells(Target.Row, "M").Value = Date End If Application.EnableEvents = True End If End Sub
- 保存文件为
.xlsm格式(启用宏的工作簿),后续选择仓库后,对应行的入库日期会自动填充当日日期且不会重复修改
二、冻结出库日期(下拉菜单选“是”时触发)
同样通过VBA实现出库标记为“是”时自动写入固定出库日期:
在同一工作表代码窗口中,补充如下逻辑(可与入库代码整合):
Private Sub Worksheet_Change(ByVal Target As Range) ' 入库日期逻辑(同上段代码) If Target.Column = 1 And Target.Cells.Count = 1 Then Application.EnableEvents = False If Target.Value <> "" And Cells(Target.Row, "M").Value = "" Then Cells(Target.Row, "M").Value = Date End If Application.EnableEvents = True End If ' 出库标记列改为你的实际列号(例:N列是14),出库日期列改为目标列(例:O列) If Target.Column = 14 And Target.Cells.Count = 1 Then Application.EnableEvents = False If Target.Value = "是" And Cells(Target.Row, "O").Value = "" Then Cells(Target.Row, "O").Value = Date ' 可选:选“否”时清空出库日期,不需要可删除此段 ElseIf Target.Value = "否" Then Cells(Target.Row, "O").Value = "" End If Application.EnableEvents = True End If End Sub
三、仓储时长计算(适配出库状态)
基于你的现有公式,调整为适配出库状态的计算逻辑:
=IF(N9="是",DATEDIF(M9,O9,"D"),IF(NOT(ISBLANK(M9)),DATEDIF(M9,TODAY(),"D"),""))
- 当出库标记为“是”时,计算入库日期到出库日期的总仓储天数
- 未出库时,计算入库日期到当日的实时仓储天数
- 入库日期为空时显示空值,避免错误提示
内容的提问来源于stack exchange,提问作者Steven0130
相关产品推荐
相关产品推荐

