返回列表 上一主題 發帖

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

回復 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

本帖最後由 軒云熊 於 2021-7-16 05:02 編輯

回復 11# PJChen
stock 工作表 我沒有改 因為我這直有一種格式 如果還有 請再多給幾個  只要把要貼的檔案都放在同一個資料匣就可以了不用改檔名
有空再幫我試試看 這樣可不可以 註解有加了一些  如果不夠清楚 可以再跟我說是哪一段 感謝
因為這寫法不是很好 看起來很亂 而且迴圈也太多了 如果檔案多的話會很慢 看看有沒有大大願意幫忙  我也可以順便學習 ^^"
感覺我的邏輯有問題 >"<
貼盤點資料0716.rar (836.26 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

本帖最後由 軒云熊 於 2021-7-20 02:05 編輯

回復 14# PJChen
請問 有日期部分的儲存格 位置是不是固定的? 還是每一個活頁簿都不一樣? 列如 萬達庫存表 有日期的部分欄位格式
因為我看其它的活頁簿 格式都是不固定的 有的是從v7 開始 有的不是  是因為這是測試檔案的關係 還是原始檔案也是這樣?

TOP

本帖最後由 n7822123 於 2021-7-20 10:32 編輯

回復 13# 軒云熊
回復 14# PJChen

有時候不是我不想幫,是我連需求都沒看懂......

感覺樓主的問題都是實務上的問題,對不熟你們公司表格填寫、運作方式的人來說,有點複雜

誠心建議,樓主可以試著把複雜的問題,簡單化之後再發問,一定會比較多人幫忙

因為看你之前的發問,推測出你有一些些的VBA基礎的 (我記得你有問過Ubound之類的)

程式可以像拼圖一樣,可拆分成很多小部分的

假如你的需求需要程式寫N個步驟,但你只有某步驟卡住不會,其他功能你都可以自己寫出來

只要把你不會的部分,單獨拿出來發問即可,之後你就可以組合出你要的完整功能

小到新增工作表、複製1列資料,都可以當作步驟

我們在解需求的時候,也是會先想整體操作步驟(程式主架構)

再一個個完成一開始想的步驟,你需要做的只是,把你原本"手動"操作的部分

分步驟一個個列出來,再試著寫這些步驟,寫不出來的部分,就發問

以下舉例說明~


假如你的需求需要程式做10個步驟,但你只有步驟6卡住不會

單獨把步驟6拿出來發問,問到答案之後,自己組合出你要的功能

當然測試檔要先自己完成步驟1~5(手動or寫VBA),再附到論壇上發問


Sub 完整功能主程序()
  Call 前面會的副程序   '步驟1~5
  Call 步驟6
  Call 後面會的副程序   '步驟7~10
End Sub

Sub 步驟6()
'須發問,不會做的部分
End Sub

Sub 前面會的副程序()
步驟1
步驟2
步驟3
步驟4
步驟5
End Sub

Sub 後面會的副程序()
步驟7
步驟8
步驟9
步驟10
End Sub
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 軒云熊 於 2021-7-20 12:08 編輯

回復 16# n7822123

n7822123前輩好  
樓主的需求是  
自動開啟指定的活頁簿檔案   多客戶盤點表
分別有2個工作表 2種格式  
日期欄位 BH~CF  的範圍之間
"盤點" 工作表 (STEP2)ROW跳2格
"stock" 工作表 (STEP3)ROW跳3格

將E4的日期與 DI欄位的日期做比對
列如:   DI6 =  D+0  E4 就扣一天
            DI6 =  D+1 則  保持不變
在某些位置有穿插帶公式的儲存格 保持不變
要比對的項目 有 客戶 品名 還有日期欄位 BH~CF  的範圍之間
-------------------
開啟要比對的檔案 
這裡也是用指定檔名的方式開啟
列如:多客戶盤點表 FORMAT(E4,"D")與 萬達庫存表 相對應的日期工作表SHEETS(X)
-------------------
萬達庫存表 是對應 多客戶盤點表 的 "stock" 工作表 (STEP3)ROW跳3格
因為有2種格式分別互相對應  
找到相對應的日期就把數值貼上(多客戶盤點表)
我現在問題出在要比對的儲存格位置沒有固定
列如:萬達庫存表
品名欄位是合併狀態
右邊 U~AF位置不固定 不一定是U~AF也有可能是從V開始或著其它欄位開始
目前發現 有"盤點"字樣的位置 可以找出範圍 但不知道如何做
請問前輩 要怎麼把相對應的 品名 與 日期 還有日期下方的數值 正確的放到陣列 方便做比對
如果直接全部塞到陣列不好做比對 因為工作表的格式內容太多而且會變更複雜

TOP

回復 16# n7822123

抱歉前輩 忘記附上檔案
0720.rar (504.38 KB)

TOP

本帖最後由 n7822123 於 2021-7-20 15:21 編輯

回復 18# 軒云熊

結合你的說明,以及前面討論串,終於看懂了
其實只是A檔A表A格式 搬移資料到 B檔B表B格式
難在不固定表格,要找需要的資料範圍


因為有2種格式分別互相對應  
找到相對應的日期就把數值貼上(多客戶盤點表)

來源表盤差下面的 XX箱,可以用合併儲存格"列數"(Columns.Count),判斷是2 Row 還是 3 Row

我現在問題出在要比對的儲存格位置沒有固定
列如:萬達庫存表
品名欄位是合併狀態

你說的是"E欄"的品名吧
合併儲存格,只有第一格有資料,其餘都是空白
利用此邏輯判斷好,是可以處理的
但我發現 E欄 BG欄 都有品名,還互相衝突ˊˋ




右邊 U~AF位置不固定 不一定是U~AF也有可能是從V開始或著其它欄位開始
目前發現 有"盤點"字樣的位置 可以找出範圍 但不知道如何做

看了各表格,確實只能用"盤點"來確定範圍
本來想用比較少用的字樣"盤差"來找範圍
但發現有的日期在盤差後面,有的在前面......(這格式不科學阿),所以還是盤點吧
針對這種不固定範圍的表格,須要先找一個 "不重複、唯一" 的關鍵字來"定位"
看了下來源表格,盤點在同一張表格也是唯一的,所以可以用
利用Range物件的"Find"方法可以找關鍵字的欄位


請問前輩 要怎麼把相對應的 品名 與 日期 還有日期下方的數值 正確的放到陣列 方便做比對
如果直接全部塞到陣列不好做比對 因為工作表的格式內容太多而且會變更複雜

上面那一步確認範圍之後,就可以塞進陣列了
結合合併儲存格的邏輯,只有第一格有資料
所以起始欄可找"盤點"字樣的欄位,終點欄位可以利用該合併儲存格的"欄數"(Columns.Count)來計算
起點列看起來蠻固定的,都從第7列開始,或者找"盤點"列+2
終點列看起來可以用A欄(保存天數)的末端資料來判斷


好啦,你的問題我都解答完畢了
我還沒要開始寫
你先挑戰看看吧~
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 軒云熊 於 2021-7-20 19:55 編輯

回復 14# PJChen

感謝 n7822123前輩提點 現在已經可以放到陣列了 
合併儲存格的"欄數"(Columns.Count)不知如何計算 >"< 
我是用 End(2).Column - 1 的方式 不知道會不會有問題 目前看起來是還可以
但迴圈卻變得更多了呵呵..先不管了 先請PJChen大大幫我試試看 sheets("stock" )部分有沒有問題 感謝

0720_1.rar (507.96 KB)

TOP

        靜思自在 : 對父母要知恩,感恩、報恩。
返回列表 上一主題