Board logo

標題: 請教依序(日前接近的先扣)將庫存量扣除的寫法 [打印本頁]

作者: adam2010    時間: 2013-1-15 21:51     標題: 請教依序(日前接近的先扣)將庫存量扣除的寫法

請問各位高手,我的原始檔案的D跟E欄位是庫存以及待入庫的量,H欄起是訂單需求日
[attach]13951[/attach]
需要先整理為~
如:A001的庫存+待入庫=500,交期需求1/31=2593,調整為庫存+待入庫=0,交期需求1/31=2093
     A003的庫存+待入庫=700,交期需求1/30=500,調整為庫存+待入庫=200,交期需求1/30=0
     A005的庫存+待入庫=170,交期需求1/18=50,1/22=60,1/28=769,調整為庫存+待入庫=0,交期需求1/18=0,1/22=0,1/28=709
[attach]13952[/attach]
[attach]13953[/attach]
作者: stillfish00    時間: 2013-1-16 10:48

回復 1# adam2010
看了好久才明白意思 , 就是把庫存物料分配到各訂單需求後扣掉?
  1. Sub balance()
  2. Dim rStart, rEnd, cStart, cEnd
  3. Dim ar1, ar2
  4. Dim minValue

  5. rStart = 3  '物料開始列
  6. rEnd = ActiveSheet.[a2].End(xlDown).Row - 1 '物料結束列
  7. cStart = 8  '日期開始欄
  8. cEnd = ActiveSheet.[a2].End(xlToRight).Column - 1 '日期結束列

  9. With ActiveSheet
  10.     ar1 = .Range(.Cells(rStart, "D"), .Cells(rEnd, "E")).Value  '庫存/待入庫 資料
  11.     ar2 = .Range(.Cells(rStart, cStart), .Cells(rEnd, cEnd)).Value    '訂單需求資料
  12.     For i = LBound(ar2, 1) To UBound(ar2, 1)
  13.         For j = LBound(ar2, 2) To UBound(ar2, 2)
  14.             minValue = Application.Min(ar2(i, j), ar1(i, 1))
  15.             If minValue <> 0 Then
  16.                 ar2(i, j) = ar2(i, j) - minValue
  17.                 ar1(i, 1) = ar1(i, 1) - minValue
  18.             End If
  19.             
  20.             minValue = Application.Min(ar2(i, j), ar1(i, 2))
  21.             If minValue <> 0 Then
  22.                 ar2(i, j) = ar2(i, j) - minValue
  23.                 ar1(i, 2) = ar1(i, 2) - minValue
  24.             End If
  25.         Next
  26.     Next
  27.     '寫回工作表
  28.     .Cells(rStart, "D").Resize(UBound(ar1, 1), UBound(ar1, 2)).Value = ar1
  29.     .Cells(rStart, cStart).Resize(UBound(ar2, 1), UBound(ar2, 2)).Value = ar2
  30. End With
  31. End Sub
複製代碼

作者: adam2010    時間: 2013-1-16 23:16

感謝stillfish00大~沒錯!
真想叫您一聲~神
太感謝了!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)