VBA:汇总不同生产线的生产计划

Background:公司有多条的生产线,生产计划员将不同的客户或者不同类别的产品的每日排产放在不同的Line中,我们需要把不同产线的产品汇总起来,方便我们后续转换为物料的每日需求(需要和BOM相乘。

思路、要求:

1,读取每个Sheet,然后逐行读取需要的数据,找到不同Title的位置

2,找到需要开始的日期(通常Production Planning都会保留部分历史数据供后期查询),所以我们需要指定一个日期(比如Today)

3,整个程序需要使用Dictionary和数组,如果使用单元格或者Range,速度会有点慢。

4,每条Line,Sheet.name建议使用L1,L2,L3开头

5,历史数据,也就哪些Completed的产品如果不删掉,那么就放在下方,但是需要和WIP中的产品分开。

步骤:

1,新建一个Summary的sheet,用于存放汇总后的DPS(Daily Production Schedules)

2,打开VBE编辑器,双击Sheet1(Summmary)输入以下代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address <> "$H$1" Then Exit Sub
Dim i, j, arr(), brr, Joinx
Dim d1 As Date
Dim d
arr = Array("Line", "料品代号", "型号/描述", "QTY", "已完成", "未完成", "待包装")
Sheet1.Cells.ClearContents
Sheet1.[a1].Resize(1, 7) = arr
end Sub

解释:在selectionchange事件中,如果鼠标不是放在单元格H1,此事件不做任何动作,退出。

如果鼠标位于H1中(我已经Yellow高亮了H1),把数组填入到[A1:G1]中。

3,新建一个Merge的Sub(还是在Sheet1中),虽然有时我们可以在模块中,但是因为直接用的Sheet1存放数据,那么就直接在Sheet1处理。

Sub merge()

Dim d As Object
'存放SKU,key=SKU,Item&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值