返回列表 上一主題 發帖

[發問] 填入廠缺&註解

[發問] 填入廠缺&註解

大大好,
我想將 最新庫存B.xlsx的 廠缺 填入 月庫存表.xlsx中 並加以註解,請問以下需求該如何寫?
程式1
1) 月庫存表.xlsx的sheet以每月的天數命名
2) 將最新庫存B.xlsx的飛比sheet BJ4:CB資料
3) 填入月庫存表.xlsx中,對應 最新庫存B.xlsx H1的日期
例如:H1 為4/16,則對應月庫存表.xlsx的sheet 16
4) 最新庫存B.xlsx的飛比BJ4:CB儲存格<>"",則填入sheet 16 J4:Y
EX 1:月庫存表.xlsx sh16  J4值為1266
對應 最新庫存B.xlsx 的BJ4儲存格 值為34
則J4=1266-34

EX 2:月庫存表.xlsx sh16  L7值為198
對應 最新庫存B.xlsx 的BL7儲存格 值為""
則L7儲存格不改變....依此類推

程式2
程式1的廠缺資料填入後
將所有填入廠缺值的值存格,插入註解"廠缺XX"
EX 1:月庫存表.xlsx sh16  J4=1266-34
則註解為  廠缺34

填入廠缺.rar (842.49 KB)

回復 24# PJChen

謝謝大家,
我已找到方法了!

TOP

本帖最後由 PJChen 於 2022-4-17 20:47 編輯

回復 22# 准提部林
准大好,
這個程式改了一年多,最後修改了您之前寫的一個另程式&合併這個,用來載入產品過允的數量及備註,
修改後寫入備註方面有些Bug,能否請您撥冗幫忙看下?我把程式寫在"飛比總表.xls"中

備註抓取方式
1..每個料號,當ED:EE>0,則填入公用庫存表的AX:AY相對應位置
2..ED:EE>0的同一列,FZ:GC就會<0,
     同一料號橫向取FZ:GC,依序取
EX: C15料號,EE22=64
FZ22<0,取GE22的日期+GX22的數量...4/28*44
GA22=<0取GH22的日期+GY22的數量...4/29*20
GB22=<0取GK22的日期+GZ22的數量...4/30*336
填入公用庫存表的AY22的備註中

3..執行填入備註的問題
GA:GC<0,當備註填入AX:AY時,
GA:GC會被重複判別,導致註解重複填入AX:AY中

有問題的部份,在公用庫存表中,已用不同顏色整列著色,
請問准大,如何讓備註不要被重複抓取?
寫入過允數量及備註.rar (204.82 KB)

TOP

回復 3# 准提部林
准大好,

我想在載入廠缺程式中,加入載入劃單數字,資料來源為
原始訂單AP:BH
廠缺數BJ:CB
劃單數CD:CV
1) 月庫存表內的原始訂單數字是作業者,自行填入,只有數值
2) 同一料號,若有廠缺數時則,儲存格內=原始訂單-廠缺數,
註解:
廠缺*XXX
3) 同一料號,若有劃單數時則,儲存格內=原始訂單-劃單數,
註解:
劃單*XXX
4) 同一料號,若有廠缺數&劃單數時則,儲存格內=原始訂單-廠缺數-劃單數,
註解:
廠缺*XXX
劃單*XXX

請問程式如何修改達到上述需求?
廠缺填入公用庫存表2.rar (875.74 KB)

TOP

回復 21# PJChen


雖然說明多次, 但還是弄不懂, 一堆文字看得眼花,
程式碼已儘量分開寫判斷, 給了方法, 若都無法理解程式碼而自行修改,
這樣大家都忙不完~~

TOP

本帖最後由 PJChen 於 2020-5-31 22:38 編輯

回復 20# 准提部林
  1.     If Val(Brr(i, 1)) < 0 Then
  2.        T(1) = "日印" & Format(Crr(i, 1), "m/d ") & "*" & Val(Crr(i, 2)) & "箱" & IIf(Val(Crr(i, 3)) > 0, "+" & Crr(i, 3), "")
  3.     End If
  4.     If Val(Brr(i, 2)) < 0 Then
  5.        T(2) = "日印" & Format(Crr(i, 4), "m/d ") & "*" & Val(Crr(i, 5)) & "箱" & IIf(Val(Crr(i, 6)) > 0, "+" & Crr(i, 6), "")
  6.     End If
  7.     TT(1) = T(1) & IIf(T(2) = "", "", vbCrLf & T(2))
  8.     '--------------------------------
  9.     If Val(Brr(i, 3)) < 0 Then
  10.        T(3) = "日印" & Format(Crr(i, 7), "m/d ") & "*" & Val(Crr(i, 8)) & "箱" & IIf(Val(Crr(i, 9)) > 0, "+" & Crr(i, 9), "")
  11.     End If
  12.     If Val(Brr(i, 4)) < 0 Then
  13.        T(4) = "日印" & Format(Crr(i, 10), "m/d ") & "*" & Val(Crr(i, 11)) & "箱" & IIf(Val(Crr(i, 12)) > 0, "+" & Crr(i, 12), "")
  14.     End If
複製代碼
'----------------------------------
准大好,
以上程式對應來源:最新庫存B.xlsx GE:GP的4組盤點資料,當Val(Brr) < 0,則要產生註解
但產生的註解幾乎都不對,可否改為判別ED:EE>0產生註解,比較好判別且直觀!
是否產生註解,都看ED:EE是否>0
以下配合檔案,比較好理解......
1) 以回廠數ED:EE作判別, 數值>0,代表有產品要回廠
2) 這時GA:GD至少有一個值<0,找<0在CK的哪一組
3) 再對應GE:GP的4組盤點資料,成為註解的來源
4) 4組盤點資料, 一定是由小到大排列,日期小的排在前面
5) ED:EE以ED優先判別,ED剩下來的回廠數,就是EE的
6) EE欄: 無回廠數時,儲存格為0 (平時有公式)
7) ED是手動填入,無回廠數時儲存格為空白
8) ED的值>0 & 換算後全部整數箱,若EE>0,則EE回廠零數瓶
9) ED的值>0 & 換算後 整箱+瓶 ,這時EE一定=0(無回廠)

ex1:
ED4=4416=4416/入數24=184箱 (找GA:GD全部<0,則註解GE:GP 4組日期)
EE4=5/入數24=不足1箱=5(1組日期)

ex2:這個完全無法產生註解
ED4=空白 (無回廠=無註解)
EE4=425/入數16=(2組日期)
在目的檔AW產生註解
05/17*9
05/18*26箱

TOP

回復 19# PJChen


總看不懂需求規則, 自行改改:
載入過允日印v02.rar (179.24 KB)

TOP

本帖最後由 PJChen 於 2020-5-29 22:43 編輯

回復 18# 准提部林

謝謝准大百忙中幫忙,我也不知道改不改得成! 可否幫忙解說這段的意思?

T1 = "": T2 = ""
        If Val(Brr(i, j * 2 + 1)) < 0 Then _
           T1 = Format(Crr(i, j * 6 + 1), "日印m/d-") & Format(Crr(i, j * 6 + 2), "0箱") & Format(Crr(i, j * 6 + 3), "+0;;#;")
        If Val(Brr(i, j * 2 + 2)) < 0 Then _
           T2 = Format(Crr(i, j * 6 + 4), "日印m/d-") & Format(Crr(i, j * 6 + 5), "0箱") & Format(Crr(i, j * 6 + 6), "+0;;#;")
        TT = Replace(Replace(Trim(T1 & " " & T2), " ", vbCrLf), "-", " *")
希望我能夠解說得更清楚些,檔案中我增加了一些範例,希望有幫助! 載入過允日印_2.rar (772.3 KB)
ED:EE有數值時,才要填入註解
當ED:EE有數值時,則判別GA:GD 數值<0的那一組,就是填入註解的來源
註解寫入來源以EE欄為主,ED欄為手動欄位,當工廠有指示要退回時,ED欄才會出現數值,且大多以整箱為單位

TOP

回復 17# PJChen

總是看不懂規則, 摸索做, 自行去修改:
載入過允日印v01.rar (190.13 KB)

TOP

回復 14# 准提部林
准大好,
檔案已可自動開啟,另一新需求:載入過允日印,還有一部份無法解決:註解無法載入日期&各自的數量
附上檔案.... 載入過允日印.rar (766.13 KB)
ED4:EE4有回廠數值
將最新庫存B的ED:EE過允數量載入月庫存表AV:AW
註解每個過允的日印及數量
EX:1
月庫存表AV4顯示註解為:
日印5/5 *36箱
日印5/7 *140箱

月庫存表AW4顯示註解為:
日印5/5 *5

GA64<0
EX:2
月庫存表AV4顯示註解為:
日印 5/9 *3箱+3
  1. Sub 載入過允註解()
  2. Dim Sht As Worksheet, PH$, FN$, xB As Workbook, xS As Worksheet
  3. Dim xD, xR As Range, arr, R&, C&
  4. Application.ScreenUpdating = False
  5. Application.Calculation = xlManual
  6. Set Sht = Workbooks("最新庫存B.xlsx").Sheets("飛比")  '來源
  7. PH = "T:\私\範例\VBA\載入過允日印\"
  8. FN = Dir(PH & "*月庫存表*.xlsx")
  9. Do While FN <> ""
  10. On Error Resume Next: Set xB = Workbooks(FN): On Error GoTo 0
  11. If xB Is Nothing Then Set xB = Workbooks.Open(PH & FN)
  12. FN = Dir
  13. Loop
  14. xB.Activate '公用庫存表
  15. On Error Resume Next: Set xS = xB.Sheets(Day(Sht.[H1]) & ""): On Error GoTo 0  '比對日期,xS =公用的當日工作表
  16. If xS Is Nothing Then MsgBox "〔日庫存表〕不存在! ": Exit Sub
  17. If xS.[AV2] = "***" Then MsgBox "本日過允已扣除! ": Exit Sub
  18. '-------------------------------------
  19. Set xD = CreateObject("Scripting.Dictionary") '記錄[來源]欄位置
  20. For Each xR In Range(xS.[B4], xS.[C65536].End(xlUp)) '公用庫存表,料號為對象
  21.     If xR <> "" Then xD(xR & "") = xR.Row
  22. Next
  23. For Each xR In xS.[AV3:AW3] '記錄公用庫存表[料號]列位置
  24.     If xR = "" Or xR = "合計" Then Exit For
  25.     xD(xR & "") = xR.Column
  26. Next
  27. '-------------------------------------
  28. R = Sht.[F65536].End(xlUp).Row  '以來源[料號]為資料列數
  29. arr = Sht.Range("ED4:EE" & R)  '來源過允
  30. For i = 1 To UBound(arr)
  31.     R = xD(Sht.[E4].Cells(i, 1) & "") '取得來源[料號]列位置
  32.     If R = 0 Then GoTo i01
  33. For j = 1 To UBound(arr, 2)
  34.     C = xD(Sht.[ED3].Cells(1, j) & "") '取得[來源]欄位置
  35.     If C = 0 Then GoTo j01
  36.     If Val(arr(i, j)) = 0 Then GoTo j01
  37.     Set xR = xS.Cells(R, C)
  38. '    xR = Val(xR) - Arr(i, j) '載入過允,變成值
  39.     xR = arr(i, j)  '載入過允

  40.     xR.NoteText "PJ:" & vbCrLf & "日印 *" & arr(i, j) '註解的內容,vbCrLf換行
  41.     With xR.Comment.Shape '註解的框大小
  42.         .Top = xR.Top
  43.         .Left = xR.Cells(1, 2).Left + 1
  44.         .Height = xR.Height + 24
  45.         .Width = 60
  46.     End With

  47. j01: Next j
  48. i01: Next i

  49. xS.[AV2] = "***" '扣除過允以3星註記(避免重覆扣除)
  50. Application.Calculation = xlCalculationAutomatic
  51. Application.GoTo xS.[J3]  '公用庫存表起始列位置
  52. End Sub
複製代碼

TOP

        靜思自在 : 能付出愛心就是福,能消除煩惱就是慧。
返回列表 上一主題