Board logo

標題: [發問] 求救高手,vba計算上一直計算錯誤 [打印本頁]

作者: wsx1130    時間: 2021-11-27 13:04     標題: 求救高手,vba計算上一直計算錯誤

各位大大請幫幫忙
連續工單數量少的時候就發生錯誤,每個棧板變成>40箱(從第9箱開始有問題)
不知道哪裡計算出問題[attach]34443[/attach]
規則如附件data2

1.每個訂單留一板QC留樣(70pcs)
2.每個棧板最多放6000pcs(40箱)
3.未滿的棧板會用下張訂單補足前一張訂單
4.箱號XX50-mm-001(箱號)
5.no尾碼依照上方顏色
作者: 准提部林    時間: 2021-11-28 16:47

使用輔助公式+vba:
[attach]34445[/attach]

純用vba的話, 太繞太傷神, 將就用吧!
作者: wsx1130    時間: 2021-11-28 17:44

感謝板主大大,原來還有這種方式,非常感謝您
作者: wsx1130    時間: 2021-11-29 00:19

板主大大
另一種是不需要標記顏色,但要將NO.排列
Crr(N - 1, 10) 這段我不知道要如何會比較好
再麻煩板大協助
作者: wsx1130    時間: 2021-11-29 18:22

板主大大,能再麻煩您有空幫我看一下此種併板方式該如何處理
作者: 准提部林    時間: 2021-11-29 19:20

回復 5# wsx1130


先將前一版, 改用全vba處理:
[attach]34449[/attach]

新問題等有空再看~~
作者: 准提部林    時間: 2021-11-29 19:26

回復 5# wsx1130


舉例太少, 規則為何?
作者: wsx1130    時間: 2021-11-29 21:33

板大不好意思,舉例太少了
附件包含兩種條件
data2
1.20盒為一箱,一棧板60箱
2.下一個工單的先合併上一工單餘數,箱號為同一個
3.序號依序遞增
data3
1.216袋為1盒,12盒為一箱,一棧板36箱
2.下一個工單的先合併上一工單餘數,箱號為同一個
再麻煩板大了
作者: 准提部林    時間: 2021-11-30 21:08

這是data2部份:
[attach]34453[/attach]

其它還沒時間看~~可能要一陣子了
作者: wsx1130    時間: 2021-11-30 21:33

謝謝版大,您有空再幫我就好了,這已經可以節省我相當多的時間
作者: 准提部林    時間: 2021-12-1 12:52

data2修改版:
有些細節須考慮:
1) 如數量不足一箱而有餘數, 須再加增二行放置餘數
2) 或數量補上一箱時, 還是不足一箱
[attach]34454[/attach]
作者: wsx1130    時間: 2021-12-1 22:33

板大,謝謝您考慮的真周到,我今天計算多筆都還沒有發現會有此問題
作者: 准提部林    時間: 2021-12-2 11:24

回復 8# wsx1130


data3模擬結果看不懂,
2617袋/216 = 12盒 > 裝1箱...餘25袋
為何"2.2外箱"是12???  而"袋數量"=216???

另..餘數25袋, 裝不了一盒, 為何"袋數量"=3???
作者: wsx1130    時間: 2021-12-2 12:37

抱歉板大,我表答不夠清楚,
數量…2592=12*216
袋….216=2592/12
箱….INT(工單數量/216)

另外一個是切換工單時,袋剩餘的不併
只併最後的箱總數量
所以25/12=3,等餘未滿12也裝一袋
但這邊是有些產品要併有些產品不用
這部份就一直非常困擾
作者: 准提部林    時間: 2021-12-4 13:30

回復 14# wsx1130

有些要併? 有些不併? 是併箱嗎? 有何規則?
作者: wsx1130    時間: 2021-12-4 16:54

併袋,有些要有些不要是指另一種產品,這種產品為換工單不併袋
作者: 准提部林    時間: 2021-12-4 17:12

回復 16# wsx1130

應該是12個裝1袋, 18袋裝一箱吧!
不併袋的部份要說清楚, 多舉些案例
作者: wsx1130    時間: 2021-12-4 17:45

板大抱歉,是我表達不清楚
板大您說的沒錯,12個為1袋,18袋為一箱,但工單的零數袋直接裝一箱,不論他有沒有滿18皆為一箱
作者: 准提部林    時間: 2021-12-5 12:29

回復 18# wsx1130

兩個樣板不同, 不管, 延用第1個, 這樣與data2的方式才一致!
1) 箱號序號應設為3位數, 如:5050-11001, 若超100箱, 日期會被變動
2) "批號效期" 加註部份自行加入
3) data1~data3併成一個檔, 沒有公式, 純vba

[attach]34461[/attach]
作者: wsx1130    時間: 2021-12-5 13:20

非常感准提版大,的確是我需要的計算方式
您真的好厲害,再次感謝您
作者: wsx1130    時間: 2021-12-5 17:15

  1. V = V - Pv:   Px = (Px + Pw) Mod 20
複製代碼
准提版大,能問一下這段會什麼需要使用mod 20嗎
作者: 准提部林    時間: 2021-12-5 19:32

回復 21# wsx1130


沒改到, 是18
作者: wsx1130    時間: 2021-12-5 20:28

收到,感謝您
作者: wsx1130    時間: 2021-12-5 21:36

准林版大,抱歉
我自己試著要將裝版單2序號(no.)的部分套用到裝版單3
反而搞得一蹋糊塗,是哪個地方出問題
作者: 准提部林    時間: 2021-12-5 22:47

回復 24# wsx1130

需求最好一次說清楚, 沒太多時間逐一跟帖~~
[attach]34463[/attach]

有回應時, 要使用左下方"回復"按鈕, 再發表
作者: wsx1130    時間: 2021-12-5 23:59

回復 25# 准提部林
了解了,我再研究看看,非常謝謝您
作者: wsx1130    時間: 2021-12-7 21:46

回復 25# 准提部林

準提板大
關於利用裝板單2,另外要產生明細的list
我嘗試著利用您原本條件改成5箱後計算再去貼上,一直無法實現我要的結果,能再麻煩您當我看一下嗎?
作者: wsx1130    時間: 2021-12-10 22:17

本帖最後由 wsx1130 於 2021-12-10 22:26 編輯

回復 25# 准提部林

抱歉準提版大,list 序號的部分我按照您的計算方式,一值是不出最後的板號-1之後的流水號,您有空能再幫我看一下嗎
  1.        Crr(N, 1) = "工單"
  2.        Crr(N, 2) = Arr(i, 1):
  3.        Crr(N, 3) = "數量"
  4.        Crr(N, 4) = V:
  5.        Crr(N + 1, 1) = "機器序號"
  6.        X1 = T & Format(TV + 1, "000000"):  X2 = T & Format(TV + V, "000000")
  7.        Crr(N + 1, 2) = X1 & IIf(V = 1, "", "-" & X2) & Chr(10) & sn
  8.        TV = TV + V
  9.        Crr(N + 2, 1) = "箱號"
  10.        Crr(N + 2, 2) = title & mm & "-" & Cn
  11.        Crr(N + 3, 1) = "板號"
  12.        Crr(N + 3, 2) = (Int((Cn - 1) / box) + 1) & " - "
  13.   
複製代碼

作者: 准提部林    時間: 2021-12-10 22:24

回復 28# wsx1130


這還要花些時間的, 實抽不出空, 再等等!!
或看是否有人先幫一下, 基本上了解之前寫的邏輯, 應可以用來改改!!
不過還是頗麻煩就是了!!
作者: wsx1130    時間: 2021-12-10 22:39

回復 29# 准提部林


    了解,我再試試看,因為我是改了好幾天,可是還是達不到想要的需求,您先忙,謝謝
作者: 准提部林    時間: 2021-12-11 18:53

資料來源=裝板單2
亦即必須先更新"裝板單2", 才能後續處理,
比之前的更繁複, 共有四個狀態, 需要設更多的變數,
寫得自己也亂了, 以後若要更改, 也要花許多時間,
畢竟要重新解讀自己寫的邏輯及規則, 通常...過一兩天就忘了寫什麼:
[attach]34505[/attach]
作者: wsx1130    時間: 2021-12-11 20:43

回復 31# 准提部林

感謝板大,我研究看看,好厲害的寫法,真的還要多加的學習,再次的感謝
作者: wsx1130    時間: 2021-12-11 21:22

回復 31# 准提部林

抱歉板大,有重複箱號是修改這一段嗎?還是Brr公式那部分
  1. If Px > 0 Then '(2)有餘量--板號相同
  2.        Pv = S2 - Px: If Pv > V Then Pv = V
  3.        C = Int((Pv + S1 - 1) / S1)
  4.        Call 寫入BRR(T$, Pv&, C&, TT$, TV&, Cx$, Cn&, U&, Un&, N&)
  5.        Px = (Px + Pv) Mod S2
  6.        V = V - Pv: TV = TV + Pv: Cn = Cn + C: N = N + 5
複製代碼

作者: 准提部林    時間: 2021-12-11 23:30

多做了一個動作, 再看看:
[attach]34508[/attach]
作者: wsx1130    時間: 2021-12-14 22:41

回復 34# 准提部林
準提板大,如果我要改變起始箱數(不論是單裝板123,我可以先設定Cn=cells(1,16)或是設定一個值例如XX=Cells(1,16)
例如X1 = "KEC4-" & Cn + 1+C+XX
這邊來做修正嗎?
  1. For j = 1 To 3
  2.         C = Cr(j): Km = Int((C + sb - 1) / sb): If C > sb Then C = sb
  3.         If C > 0 Then CK = 1
  4.         For k = 1 To Km
  5.             N = N + 1:  P = C * 20
  6.             Crr(N, 3) = Arr(i, 1): Crr(N, 4) = P: Crr(N, 5) = C
  7.             X1 = "KEC4-" & Cn + 1: X2 = "KEC4-" & Cn + C
  8.             Crr(N, 6) = X1 & IIf(C = 1, "", "-" & X2)
  9.             Cn = Cn + C
  10.             Crr(N, 7) = Int((Cn - 1) / sb) + 1
  11.             X1 = T & Format(TV + 1, "000000"):  X2 = T & Format(TV + P, "000000")
  12.             Crr(N, 10) = X1 & "-" & X2
  13.             TV = TV + P: N = N + 1
複製代碼

作者: wsx1130    時間: 2021-12-14 23:42

回復 35# wsx1130
準提板大,我已經修改好了,我再多設了一欄If Cn = 0 Then Cn = xx可以執行
謝謝
作者: wsx1130    時間: 2021-12-20 19:52

多做了一個動作, 再看看:
准提部林 發表於 2021-12-11 23:30


不好意思,準提板大
我利用裝板單3修改一個修改裝板單4
但在外箱的數量也一值無法算出要的數量(EX),數量的那欄也無法以1080為單位進行切換
再麻煩幫我看一下,哪個地方寫得有問題

另外之前的裝板單3,最後的一個都會計算成餘數,不是補前袋數,是Px這欄位要修改嗎?
作者: wsx1130    時間: 2021-12-28 21:15

多做了一個動作, 再看看:
准提部林 發表於 2021-12-11 23:30

不好意思,準提板大
我利用裝板單3修改一個修改裝板單4
但在外箱的數量也一值無法算出要的數量(EX), ...
wsx1130 發表於 2021-12-20 19:52


與有點反過來之前都是要先以棧板數來算可放數量,但這是每欄位總數量最多1080
  1. If V + C * sb + Pv < st Then
  2.        Crr(N, 7) = "合併"
  3.        Else
  4.        Crr(N, 7) = -Int(-(V / st))
  5.        End If
  6.        Cn = Cn + 1
複製代碼
我另加了這段,但計算到後面還是會有箱號超過總數,在麻煩您有空幫看看
謝謝
作者: 准提部林    時間: 2021-12-31 23:09

回復 37# wsx1130

邏輯都差不多, 自己再抓看看:
[attach]34558[/attach]
作者: wsx1130    時間: 2022-1-2 21:14

回復 39# 准提部林
非常感謝准提版大,我再仔細看您的計算邏輯,真的好厲害
有些地方真的還要多學習,謝謝
作者: wsx1130    時間: 2022-1-2 22:21

回復 39# 准提部林

不好意思准提版大,我計算如果一張工單為800,一張工單為2000,會多計算一次整數箱1080,是Cr(1)那邊需要修改嗎
作者: 准提部林    時間: 2022-1-3 13:34

回復 41# wsx1130


1) 箱號+月份
箱號 = [S2]
改為:
箱號 = [S2] & Format(日期, "-mm")

2) 修正四小箱整合一外箱錯誤
Cr(2) = Int((Cv - Cr(1) * 外箱數) / 外箱數) * 外箱數
改為:
Cr(2) = Int((Cv - Cr(1)) / 外箱數) * 外箱數
作者: wsx1130    時間: 2022-1-15 12:18

回復  wsx1130


1) 箱號+月份
箱號 = [S2]
改為:
箱號 = [S2] & Format(日期, "-mm")

2) 修正四 ...
准提部林 發表於 2022-1-3 13:34


準提板大,關於裝板單一要另外產生一個板號,我使用list2的方式去修改,但會碰上QC字眼,就無法計算
您有空再麻煩幫我看一下,謝謝
作者: 准提部林    時間: 2022-1-15 17:44

回復 43# wsx1130

If Val(Arr(i, 2)) = 0 Or Val(Arr(i, 5)) = 0 Then GoTo 101


If Val(Arr(i, 2)) = 0 Or Left(Arr(i, 5), 2) = "QC" Then GoTo 101
作者: wsx1130    時間: 2022-1-15 21:28

回復  wsx1130

If Val(Arr(i, 2)) = 0 Or Val(Arr(i, 5)) = 0 Then GoTo 101


If Val(Arr(i, 2)) ...
准提部林 發表於 2022-1-15 17:44



感謝,可以跳過此步驟
但準提板大,如何將同一個棧板往上併,如果我在Brr設定,會有重複的值出現
作者: 准提部林    時間: 2022-1-16 08:41

本帖最後由 准提部林 於 2022-1-16 08:42 編輯

回復 45# wsx1130


同板號放同一區塊???
最少三行, 同一板號超過三行, 怎放?

最好先模擬想要的結果, 不要老是去人猜!
作者: wsx1130    時間: 2022-1-16 10:23

回復 46# 准提部林
不好意思,準提板大,我之前有先查過,此lot基本上都蠻大的,3欄已經是可以足夠的狀況,基本上都會以2欄為主
作者: wsx1130    時間: 2022-2-10 00:11

回復  wsx1130


同板號放同一區塊???
最少三行, 同一板號超過三行, 怎放?

最好先模擬想要的結果,  ...
准提部林 發表於 2022-1-16 08:41


抱歉,準提板大,我嘗試改了list1,但仍無法往前補lot編號,您有空能幫我看看哪裡需要修改嗎?謝謝




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