返回列表 上一主題 發帖

[發問] 對應日期貼盤點資料

[發問] 對應日期貼盤點資料

本帖最後由 PJChen 於 2021-7-4 13:36 編輯

大大們好,
    With Sh
    Sh.Activate
        For j = 6 To xrow Step 2
            .Range("X" & j + 1 + 1).Resize(1, 16).Copy
            xW.Sheets("盤點").Range("BO" & 1 + j).Resize(1, 16).PasteSpecial xlPasteValues
        Next
    End With

盤點工作表從A欄的各客戶檔案把相應的盤點資料,copy過來
E4是指定日期
A欄是客戶名
當DI欄= D+0則從客戶檔案的數字工作表找E4-1的工作表
ex:E4=7/3,則找"2"工作表
將x:am的盤點資料,有庫存的數字,對應日期相符,貼到盤點工作表的BH:CF的欄位中

來源各客戶的檔案格式不會完全相同,但都是類似的,只以一定作範本,
盤點工作表中有很多的公式,所以貼上的資料不能干擾其他儲存格,
請問(紅字)對應日期貼上盤點數值的這段程式該怎麼寫?   貼盤點資料.rar (328.03 KB)
  1. Sub copy_蜜蜂盤點()
  2. Dim PH$, FN$, W As Workbook, xW As Workbook, xD As Worksheet, xS As Worksheet, Sh As Worksheet, i As String, rng As Range
  3. Set xD = ThisWorkbook.Sheets("VBA")  '程式來源
  4. k = xD.[V1] - 1 '取前一日
  5. i = Format(k, "D")
  6. y = Format(k, "yyyy")
  7. m = Format(k, "m")
  8. '---------------------
  9. Set xW = Workbooks("多客戶盤點表")
  10. PH = xD.[BB1]
  11. '---------------------
  12. FN = Dir(PH & "*蜜蜂*" & y & "*" & m & ".xlsx")
  13. Do While FN <> ""
  14. On Error Resume Next: Set W = Workbooks(FN): On Error GoTo 0
  15. If W Is Nothing Then Set W = Workbooks.Open(PH & FN)
  16. Set Sh = W.Sheets(i)
  17. With Sh
  18.     xrow = Cells(Cells.Rows.Count, "A").End(xlUp).Row + 5
  19. End With
  20.      xW.Sheets("盤點").Range("M6:M" & xrow) = Sh.Range("T7:T" & xrow).Value '來源 前日結餘   
  21. With Sh
  22.     Sh.Activate
  23.         For j = 6 To xrow Step 2
  24.             .Range("X" & j + 1 + 1).Resize(1, 16).Copy
  25.             xW.Sheets("盤點").Range("BO" & 1 + j).Resize(1, 16).PasteSpecial xlPasteValues
  26.         Next
  27.     End With
  28.    
  29. FN = Dir
  30. Loop
  31. End Sub
複製代碼

回復 1# PJChen

多客戶盤點表.xlsx BH:GF欄日期的比對要以到期日(雙號列)為準,列5是生產日,不要作比對...

TOP

本帖最後由 PJChen 於 2021-7-12 20:41 編輯

回復 4# 軒云熊

多客戶盤點表 是目的資料檔,接收各客戶的盤點資料
DI欄 的 0 跟 1 是自訂的,
例如今天是7/12,DI欄 出現的是0,則來自客戶的盤點資料則要貼12-1=11工作表的盤點資料,
DI欄 出現的是1,則來自客戶的盤點資料則要貼12-0=12工作表的盤點資料,
這個是固定的規則模式,完全無變化的,是公司作業的規則而已!
所有的表格都是測試用,可以任意填入資料,用來做程式測試,
今天是7/12,我在來源檔的11工作表,任意填入些資料,測試程式,發現完全無貼上的動作

來源的客戶盤點格式分2種類型,一種是2格合併(目的工作表是貼在"盤點"),一種是3格合併(目的工作表是貼在"stock"),
來源的客戶盤點資料有很多個,所以做成的程式,希望能自行指定來源的盤點區(盤點區不一定在哪個儲存格),就能貼上資料
現將來源的客戶盤點檔,各附上一個測試檔
貼盤點資料0710.rar (494.03 KB)

TOP

回復 6# 軒云熊
stock 跟 萬達庫存表的測試檔,日期都是測試的,所以改一下可以測試就好了 貼盤點資料0710.rar (470.04 KB)
----------萬達庫存表 盤點資料
(低脂)U8:AF8,對應stock BH7:CF7
(原味)U11:AF11,對應stock BH10:CF10
有相同日期的盤點數,就貼到stock同相日期的盤點格內

----------蜜蜂倉 盤點資料
V7:AK7,V9:AK9,V11:AK11同品名&同日期對應
多客戶盤點表.sh(盤點)BH6:CF6,BH8:CF8,BH10:CF10

TOP

回復 8# 軒云熊
熊大好,

測試結果,Stock的日期沒有連續時,貼上的盤點資料會不正確,測試結果留在工作表中,
我有很多檔案要用到這個2個程式,可否幫忙註解程式?
貼盤點資料0710.rar (476.52 KB)

TOP

回復 10# 軒云熊

再附上2個測試檔 貼盤點資料_測試2.rar (330.44 KB)
程式我多測試些再回覆
請問程式備註,能否再詳細些?

TOP

回復 10# 軒云熊
熊大,
請幫忙研究一下,
a) 目的檔有二種固定格式,且key-in的欄位範圍相同,只有合併儲存格分2列&3列
b) 而來源檔雖然盤點範圍不同,但格式大致相同,只有列數的不同,也分為二種格式
1) 盤點區在(盤差)(預設天數)之間
2) 盤點區在(結餘合計)(盤差)之間
有沒有可能程式可以只改檔名,就可以適用於從來源貼到目的檔?
(最多就分成2個程式,分別是貼到盤點、stock)
因為客戶會有增加的可能性,品名也是,
希望能夠在增加客戶&品名時,只要在工作表往下增加,就可以使用,
不要再去修改程式!
另外還想請問,檔名因為都很長,我想改為開檔時用ex: *永遠*,這樣的方法,
我只知道這種寫法,不知還有其他方式嗎?
   Do While File <> ""
        With Workbooks.Open(Path & File)
------
   File = Dir
Loop
鮮花庫存表.rar (148.25 KB)

TOP

回復 13# 軒云熊
熊大好,
1) stock工作表,不能改為Sheets(數字),實際使用檔含有其他工作表,這樣會出錯
2) stock的來源檔,只要品名順序不同,就無法貼上資料,程式就中斷了
3) Workbooks("多客戶盤點表.xlsx").Sheets("盤點")也是相同情形,不能改為Sheets(數字)
4) 公司的存放區,有很多檔,不只是這幾個檔案,且有類似檔名,所以用Dir(U & "*.xlsx")也會出錯
     上次詢問:檔名因為都很長,想改為開檔時用ex: *永遠*,這樣的方法,不知可否?
5) 二個程式都需要有比對品名的功能才行,不然一旦品名排列不同,就會出錯了
Re貼盤點資料0716.rar (944.92 KB)

TOP

回復 20# 軒云熊
這個程式檔,只有一個stock的程式,所以就先測試這個
(低脂) 250g無法貼上盤點資料

TOP

本帖最後由 PJChen 於 2021-7-21 22:20 編輯

回復 26# 軒云熊

熊大好,
舊的測試檔,都沒什麼問題,我會再用正式的檔案測看看
另,我新增了一個測試檔,發現無法運作,請幫我看一下
R_0721.rar (279.96 KB)

TOP

        靜思自在 : 屋寬不如心寬。
返回列表 上一主題