MRP(VBA系列):5.Conponent to Build,PO参与欠料分析

Tips:所有代码都是为目前任职公司编写,极大概率不适合其他公司,在这里发布:首先是记录;其次才是分享,望理解!

前面的4篇文章都是没有PO参与的,这里开始加入PO,就是如果某一天有交货,我们也开始考虑新的Balance!

eg,某天累计欠料100,但是有新的交货200,那么我们认为这天的剩余100,而且后续的欠料也重新消耗这100。

如下图:10月26日有交货,我们体现出来!

代码:

'那么我们读取shortage数据直接处理吧
'把PO的数按d(item&date)做汇总处理
'直接在Shortage处理:N1第二次开始等于arr(i+1)-arr(i)这个是N2,N1=N2,然后重新赋值N2

Dim n1, n2

d.RemoveAll
mrr = Sheets("PO").UsedRange
nrr = Sheets("shortage").UsedRange
str = ""

For i = 2 To UBound(mrr)
    If IsDate(mrr(i, 4)) Then
        str = mrr(i, 1) & Format(mrr(i, 4), "yyyy/mm/dd")
        If d(str) = "" Then
            d(str) = mrr(i, 5)
        Else
            d(str) = d(str) + mrr(i, 5)
        End If
    End If
Next

'Sheets("test").[b1].Resize(d.Count) = Application.Transpose(d.Keys)
'Sheets("test").[a1].Resize(d.Count) = Application.Transpose(d.Items)
ReDim srr(1 To UBound(nrr), 1 To UBound(nrr, 2))

For i = 2 To UBound(nrr)
    For m = 1 To 6
        srr(i - 1, m) = nrr(i, m)
    Next
    For j = 7 To UBound(nrr, 2)
        n1 = nrr(i, j - 1) - nrr(i, j)
        '需求数
        If IsDate(nrr(1, j)) Then
            If d.Exists(nrr(i, 1) & Format(nrr(1, j), "yyyy/mm/dd")) Then
                srr(i - 1, j) = srr(i - 1, j - 1) - n1 + d(nrr(i, 1) & Format(nrr(1, j), "yyyy/mm/dd"))
                'nrr(i, j) = srr(i - 1, j)
            Else
                srr(i - 1, j) = srr(i - 1, j - 1) - n1
            'Debug.Print "BBB"
            End If
        Else
            srr(i - 1, j) = nrr(i, j - 1) - n1
        End If
    Next
Next

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值