返回列表 上一主題 發帖

[發問] 如何判斷並自動分配

[發問] 如何判斷並自動分配

請教各位先進

有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,滿足的話就結束

隨意窩 "EXCEL迷"  blog  或 http://blog.xuite.net/hcm19522/twblog
已收集6200篇 EXCEL函數

TOP

回復 2# hcm19522


    謝謝先進的回覆,又學到了很多

經過嘗試之後因為資料量多處理下來不能達到預期的效果,目前嘗試用VBA寫

還卡在  FOR  NEXT 的迴圈,比對到資料後處理後 後面還是繼續NEXT  找不到方法跳出迴圈.....

TOP

回復 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

TOP

回復 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"

TOP

        靜思自在 : 不怕事多,只怕多事。
返回列表 上一主題