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