返回列表 上一主題 發帖

[發問] 自動套表

Sub 載入()
Dim S1 As Worksheet, S2 As Worksheet, Rng1 As Range, Rng2 As Range
Dim Arr, R&, C&, Ck%, N&, xR As Range
Set S1 = Sheets("廠缺表"):   Set S2 = Sheets("出貨")
Set Rng1 = S1.[B3:G3]:   Set Rng2 = S1.[B4:H4]:   Set xR = S1.[B3]
Application.ScreenUpdating = False
Call 清除
Arr = Range(S2.[a1], S2.UsedRange)
For C = 45 To UBound(Arr, 2)
    Ck = 0
    For R = 4 To UBound(Arr)
        If Val(Arr(R, C)) <= 0 Then GoTo 101
        If Ck = 0 Then
           Rng1.Copy xR
           xR.Resize(1, 6).VerticalAlignment = xlCenter '跨欄置中
           xR = Arr(3, C) '廠缺名稱
           Set xR = xR(2): Ck = 1
        End If
        '----------------------------
        Rng2.Copy xR
        xR.Resize(1, 4) = Array(Arr(R, 8), "", Arr(R, 7), Arr(R, C))
        xR(1, 7) = Arr(R, 5)
        Set xR = xR(2): N = N + 1
101: Next R
Next C
If N = 0 Then Exit Sub
Rng2.Copy xR(2)
xR(2).Resize(1, 7).ClearContents
xR(2).Resize(1, 6).Interior.ColorIndex = 37
xR(2, 4).Resize(1, 3) = "=SUM(R[-" & xR.Row - 3 & "]C:R[-1]C)"
End Sub

Sub 清除()
With Sheets("廠缺表")
    .UsedRange.Offset(4, 0).EntireRow.Delete
    .[B3] = ""
    .[B4:G4].ClearContents
    .[F4] = "=IF(MIN(D4:E4)=0,"""",INT(E4/D4))"
    .[G4] = "=IF(MIN(D4:E4)=0,"""",MOD(E4,D4))"
    .[H3:H4].ClearContents
End With
End Sub

Xl0000142.rar (26.85 KB)

若需跨檔, 自行去修改~~

===========================================
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

做個跨檔執行, 自行修改套用:
廠缺.rar (40.53 KB)
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

回復 12# 准提部林

感謝准大,
多天來 現在才有空可以上網查看, 這幾天因為有新工作,累斃了....
等我測試下再報告

TOP

本帖最後由 PJChen 於 2019-11-25 22:43 編輯

回復 12# 准提部林

准大好,
我依現行的測試檔,把程式修改檔名後
程式測試結果留在廠缺表中(不是 自動廠缺表)
它與8樓的程式測試相同,當"飛比"sheet有訂單數據時,
訂單資料會連同廠缺,一起呈現在廠缺表中
再麻煩看下, 感謝
3rd_程式與執行檔 分開_amd.rar (255.3 KB)

TOP

回復 14# PJChen

看不懂你的問題,
1)若要資料放在"自動廠缺表",
  將 Sheets("廠缺表") 改成 Sheets("自動廠缺表")
2)廠缺欄位數若是固定的:
  For C = 45 To UBound(Arr, 2)
  改成 For C = 45 To 60


For C = 45 To UBound(Arr, 2)
    Ck = 0
    If Arr(3, C) = "劃單合計" Then Exit For  '加入這一行, 以[劃單合計]判斷廠缺欄位的結束點
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

回復 15# 准提部林
這陣子因為作業內容有變動,所以表格也大幅修改,請幫忙看下....
1)  For C = 45 To UBound(Arr, 2)
  改成 For C = 45 To 60
這個方法測試後OK,
在執行廠缺表後會出現自動加總(目前在第8列)
我想加個"合計",請問在程式哪個地方可以加入?

2) 另外這個方式,我還試不出來,請問我加入的地方是否不對?
For C = 45 To UBound(Arr, 2)
    Ck = 0
    If Arr(3, C) = "劃單合計" Then Exit For  '加入這一行, 以[劃單合計]判斷廠缺欄位的結束點
3rd_廠缺表.rar (286.86 KB)

TOP

回復 15# 准提部林
補充:
廠缺表.sheet A欄的料號,不知能否讓它一併出現?

TOP

回復 1# PJChen

我不會VBA,只能用其他方法做出類似的給您參考。
主要是用資料-從表格/範圍  利用出貨sheet內容以Power Query 編輯器去整理資料,
最後再用樞紐分析表去產生補貨明細。
以上,大致內容如附件
自動套表-查詢與樞紐分析.zip (54.33 KB)

TOP

回復 15# 准提部林
Dear准大,
重新整理一下...
1) 執行廠缺表後會出現自動加總,我想加個"合計",請問在程式哪個地方可以加入?
2) 廠缺表.sheet A欄加入料號,如果要大幅修改程式、不好做的話,就算了!我再自己手動加入
3) 廠缺表 F:G(箱瓶)如何讓它自動計算後,變成值,不要有公式?加總欄也是...

TOP

回復 19# PJChen

測試檔:
廠缺_v02.rar (80.72 KB)
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

        靜思自在 : 甘願做、歡喜受。
返回列表 上一主題