Board logo

標題: [發問] 如何判斷並自動分配 [打印本頁]

作者: 小華    時間: 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/)