Board logo

標題: 請問各位老師,要如何對應以下的數量 [打印本頁]

作者: wsx1130    時間: 2021-12-29 22:04     標題: 請問各位老師,要如何對應以下的數量

B欄位對應A欄位數量以270為單位
請問要如何修改,一值無法算得B欄數量
  1. Sub to2test()

  2. Dim e&, st$, sb$
  3. st = Cells(1, 4)
  4. sb = Cells(1, 5)
  5. e = [a65536].End(3).Row - 1: If e < 1 Then Exit Sub
  6. For i = 3 To e
  7.    If Cells(i, 1) = "" Then
  8.       Cells(i, 2) = ""
  9.    
  10.     On Error Resume Next
  11.    
  12.     ElseIf Cells(i, 1) < st Then
  13.     Cells(i, 2) = -Int(-Cells(i, 1) / st)
  14.     ElseIf Cells(i, 1) + Cells(i - 2, 1) + Cells(i - 1, 1) > sb Then
  15.     Cells(i, 2) = -Int(-Cells(i, 1) / st) - 1
  16.     ElseIf Cells(i, 1) + Cells(i - 2, 1) + Cells(i - 1, 1) = sb Then
  17.     Cells(i, 2) = -Int(-Cells(i, 1) / st) - 1
  18.     ElseIf Cells(i, 1) + Cells(i - 2, 1) = sb Then
  19.     Cells(i, 2) = -Int(-Cells(i, 1) / st) - 1
  20.     Else
  21.    
  22.    
  23.     End If
  24. Next

  25. Cells(4, 5) = -Int(-Cells(4, 4) / st)


  26. End Sub
複製代碼

作者: samwang    時間: 2021-12-30 13:57

回復 1# wsx1130

205 +344+736 = 1285
270 +270 +540 =1080
B11 是不是要改為 3
如果不是邏輯為何?
請確認,謝謝
作者: wsx1130    時間: 2021-12-30 18:57

回復 2# samwang

[attach]34557[/attach][attach]34557[/attach][attach]34557[/attach]

Sam,抱歉傳錯檔案,應該為附件,規則仍為1080
作者: samwang    時間: 2022-1-3 07:56

本帖最後由 samwang 於 2022-1-3 07:57 編輯

回復 3# wsx1130

答案有問題吧?  條件可否在寫詳細,感謝
作者: samwang    時間: 2022-1-3 09:38

回復 3# wsx1130

3240 / 270 = 12
請再確認,謝謝
作者: samwang    時間: 2022-1-3 10:10

回復 3# wsx1130

819 /270 = 3箱(810),沒裝箱有9個,
261 / 270 = 1箱,可以在裝上9個前一箱

279 / 270 = 2箱(540),應該 1箱吧? 在將沒裝箱有9個,裝到下一箱

好多問題,條件不是很明確,請再確認,謝謝
作者: samwang    時間: 2022-1-3 13:53

回復 3# wsx1130

條件只要有多餘數量就加1箱,範例說明如下,請測試看看,謝謝
819-->4箱,1080-819,還有261個空間
261 -261 =0箱,261個補前一箱   

Sub test()
Dim Arr, T%, T1%, Et, i&
T = 270
Arr = Range("a1:b" & [a65536].End(3).Row)
For i = 3 To UBound(Arr)
    If Arr(i, 1) = "" Then GoTo 99
    If Arr(i, 1) >= 1080 Then
        Cells(i, 4) = Application.Round((Arr(i, 1) / T), 0): GoTo 99
    Else
        For i2 = i To UBound(Arr)
            If T1 >= 1080 Then Exit For
            If Arr(i2, 1) <> "" Then T1 = T1 + Arr(i2, 1)
        Next
    End If
    For i3 = i To i2 - 1
        If Arr(i3, 1) = "" Then GoTo 98
        Arr(i3, 1) = Arr(i3, 1) - Et
        Cells(i3, 4) = Application.RoundUp((Arr(i3, 1) / T), 0)
        Et = T * Cells(i3, 4) - Arr(i3, 1)
98: Next
    i = i2 - 1: T1 = 0: Et = 0
99: Next
End Sub




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