標題:
[發問]
如何判斷並自動分配
[打印本頁]
作者:
小華
時間:
2019-10-16 14:57
標題:
如何判斷並自動分配
請教各位先進
有4個儲位 A、B、C、D 分配的優先順序也是A、B、C、D,
假如 A(10) 、B(5)、C(6)、D(0) (括號內是庫存量)
現在B儲位的數量要湊滿16,照分配順序是A--->C--->D
手動的方式是把A儲位數量10移到B儲位並判斷有沒有滿足16,沒有的話就下一個儲位C,滿足的話就結束
作者:
hcm19522
時間:
2019-10-17 14:08
https://blog.xuite.net/hcm19522/twblog/588466756
作者:
小華
時間:
2019-10-18 19:01
回復
2#
hcm19522
謝謝先進的回覆,又學到了很多
經過嘗試之後因為資料量多處理下來不能達到預期的效果,目前嘗試用VBA寫
還卡在 FOR NEXT 的迴圈,比對到資料後處理後 後面還是繼續NEXT 找不到方法跳出迴圈.....
作者:
小華
時間:
2019-10-18 19:07
回復
3#
小華
紅色這段一直跑迴圈 跳不出來 資料量有上千筆
Set x = Workbooks("CL Diff.xlsm").Sheets("Upload-1")
Set y = Workbooks("CL Diff.xlsm").Sheets("MB58")
Set Z = Workbooks("CL Diff.xlsm").Sheets("Diff")
i = Z.Cells(1, 1).End(xlDown).Row
b = y.Cells(1, 1).End(xlDown).Row
c = x.Range("L1")
For k = 2 To i
f = Z.Cells(k, 8)
If Z.Cells(k, 18) <> 0 Then
If Z.Cells(k, 26) = "" Then
For j = 2 To b
q = y.Cells(j, 7) - Z.Cells(k, 18)
If y.Cells(j, 8) = f And y.Cells(j, 2) = Z.Cells(k, 2) And q > 0 Then
x.Cells(c + 2, 1) = Z.Cells(k, 2)
x.Cells(c + 2, 2) = Z.Cells(k, 3)
x.Cells(c + 2, 3) = Z.Cells(k, 4)
x.Cells(c + 2, 4) = Z.Cells(k, 5)
x.Cells(c + 2, 5) = Z.Cells(k, 6)
x.Cells(c + 2, 6) = Z.Cells(k, 7)
x.Cells(c + 2, 7) = Z.Cells(k, 8)
x.Cells(c + 2, 8) = Z.Cells(k, 9)
x.Cells(c + 2, 9) = Z.Cells(k, 18)
Z.Cells(k, 26) = "OK"
ElseIf q < 0 Then
x.Cells(c + 2, 1) = Z.Cells(k, 2)
x.Cells(c + 2, 2) = Z.Cells(k, 3)
x.Cells(c + 2, 3) = Z.Cells(k, 4)
x.Cells(c + 2, 4) = Z.Cells(k, 5)
x.Cells(c + 2, 5) = Z.Cells(k, 6)
x.Cells(c + 2, 6) = Z.Cells(k, 7)
x.Cells(c + 2, 7) = Z.Cells(k, 8)
x.Cells(c + 2, 8) = Z.Cells(k, 9)
x.Cells(c + 2, 9) = y.Cells(j, 7)
Z.Cells(k, 26) = "數量差" & q
End If
Next j
End If
End If
Z.Cells(k, 26) = "無量差"
Next k
MsgBox ("資料已整理完畢")
End Sub
作者:
小華
時間:
2019-10-23 20:32
回復
4#
小華
自己Google找了一下結束迴圈的寫法 原來增加 EXIT FOR 就可以了
For j = 2 To b
if z.cells(k,26)="" then
exit for
end if
q = y.Cells(j, 7) - Z.Cells(k, 18)
If y.Cells(j, 8) = f And y.Cells(j, 2) = Z.Cells(k, 2) And q > 0 Then
x.Cells(c + 2, 1) = Z.Cells(k, 2)
x.Cells(c + 2, 2) = Z.Cells(k, 3)
x.Cells(c + 2, 3) = Z.Cells(k, 4)
x.Cells(c + 2, 4) = Z.Cells(k, 5)
x.Cells(c + 2, 5) = Z.Cells(k, 6)
x.Cells(c + 2, 6) = Z.Cells(k, 7)
x.Cells(c + 2, 7) = Z.Cells(k, 8)
x.Cells(c + 2, 8) = Z.Cells(k, 9)
x.Cells(c + 2, 9) = Z.Cells(k, 18)
Z.Cells(k, 26) = "OK"
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)