返回列表 上一主題 發帖

請教依序(日前接近的先扣)將庫存量扣除的寫法

回復 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
複製代碼

TOP

        靜思自在 : 難行能行,難捨能捨,難為能為,才能昇華自我的人格。
返回列表 上一主題