返回列表 上一主題 發帖

[發問] 根據"料號欄"為依據,做排序

[發問] 根據"料號欄"為依據,做排序

大大們好,

請教如下....
來源檔為商品2!新月工作表       
我有許多的檔案都需要根據"料號欄"的料號順序為依據,做排序       
需排序的每個檔的表頭位置,及內容都不太同,       
目的檔排序的準則為整列排序,若有未出現的料號,則略過       
例:        標示黃底,都是目的檔庫存表沒有的品項,則目的檔的這些料號,就略過,跳下個料號繼續排序
        由於目的檔也會有些工作表與料號無關,不需排序,
        所以需排序的工作表,以"新月"M1:M2所指定的起迄工作表作為排序對象
        並且自動找尋表頭有"料號"字樣,就依"新月"的料號順序整列排序

依新月工作表_料號排序.rar (326.8 KB)

本帖最後由 PJChen 於 2021-4-6 23:16 編輯

不好意思,我想我表達得不夠清楚,補充如下:
目的檔的路徑如下,它沒有指定特定檔案,這個路徑底下的所有檔案,都是要以新月的料號欄排序的,
T:\0_自訂表單\日常表格\
檔案打開以後,以"新月"M1:M2所指定的起迄工作表作為排序對象,
EX:
1) 現在我只放一個範例檔"庫存表",以不指定檔名的方式開啟
2) 以"新月"M1:M2所指定的起迄工作表,為2~6,
3) 將庫存表從第2~第6的工作表的料號欄,比對新月的料號欄的順序來排序
4) 新月的料號欄是排序的準則,它的料號比較多,庫存表是要依新月的料號欄順序做排序,當新月的料號欄是目的檔料號欄所沒有的料號,則跳下個料號繼續排序

由於我有許多的檔案都需要同樣的排序方式,但各種檔案格式不相同,但需要排序的工作表,都指定在"新月"M1:M2為起迄,但因為格式不相同,打開檔案後,
除了依工作表起迄作排序,需要能自動找到"料號"字樣的功能,才能依據料號欄作整列排序

TOP

本帖最後由 PJChen 於 2021-4-8 23:43 編輯

回復 3# 軒云熊
您好,
來源檔指定起迄工作表,這個寫法,會使它去尋找數字工作表,起迄工作表,希望能數第x~第x個工作表,
因為有些工作表是非數字的,請問要怎麼改?
    For E = 1 To Sheets.Count
        N = Sheets(E).Name: Sheets(E).Activate
        If IsNumeric(N) Then
            If Int(N) > W.[M2] Then Exit For
            If Int(N) >= W.[M1] And Int(N) <= W.[M2] Then

另外請問,這段如何解讀? 是否為來源檔的H欄? 來源檔除了A欄料號是用來作為排序準則,及M1、M2用來數工作表起迄外,其餘欄位都不能用的!
    For X = [H65535].End(3).Row To 1 Step -1
        If IsError(Cells(X, "H")) Then
            Rows(X).Delete
        End If
    Next X
    Range([A65535].End(3), [A4]).Sort [A4], 1, Header:=2

TOP

回復 5# 軒云熊
不好意思
我原來想得很多,結果程式就變得很複雜,我想改為單純化,只要
1) 依來源檔"商品2"的A欄作為排序依據
2) 以庫存檔的"整月統計"(意思是指定單一工作表就好)",搜尋料號欄來整列排序
3) 庫存檔的料號與來源檔對不上時,一律排在下方
4) 若料號相同,則以來源的料號順序來排序
5) 能否在程式中註解,我想了解程式作用

現在可以排序,但結果是錯誤的,而且會將"整月統計"中表格的最後一列踢到第77列,能否幫忙看看?
我把排序後的正確結果放在"整月統計"

依新月工作表_料號排序.rar (287.38 KB)

TOP

回復 7# 軒云熊

熊大好,
反覆測試,它還是無法正確排序,我把正確及錯誤的排列都留在檔案中,
請再幫忙看下....
R0409.rar (423.95 KB)

TOP

回復 9# 軒云熊
不好意思,排序還是會出錯,
"整月統計"的表頭原來在第3列,為了測試用我把上方隨意增減空白列,現在表頭放在第6列,
結果不但排列錯誤,而且會將原來的表頭第2列,移動到下方....
在偵測"料號"的所在位置時,從料號往上的所有列數,都屬於表頭位置,不能列入排序範圍,
不然表格會大亂....再麻煩您了.
RR0409.rar (300.39 KB)

TOP

回復 11# 軒云熊
熊大好,
我將目前可能會需要排序的工作表都放入一併測試,如下:
1) 所有工作表,排序的資料下半部不正確
2) 工作表更改過表頭(把表頭範圍加大),排序就更不正確

R0412.rar (393.09 KB)

TOP

回復 13# 軒云熊

熊大好,

1) 印盤點表...這個工作表完全無法排序,我想是因為第一欄是空白,在第一欄key入某些數字後,就可以正常排序,不知這個能夠克服嗎?如果不行,就不改程式了!
2) 另外,無意中發現若在程式中按F5,則程式也不能排序,但按"sorting"鍵時則可排序,不知原因?

TOP

回復 15# 軒云熊
熊大好,
我把程式稍作修改,以便順應我平日正式檔,程式與執行報表是分開的,但修改後程式就停在
b = xB.Sheets(a3).[a1].SpecialCells(xlCellTypeConstants, 23).Column
無法執行,請幫忙看看!
R0413_1.rar (414.14 KB)

TOP

回復 19# 軒云熊
熊大好,
以下問題是用19樓的程式測試的:
1) MsgBox "選取依據資料檔案的位置"
因為我的檔案會有多個工作表,所以除了指定位置外,還必須要可以指定"依據"哪個工作表名稱來排序
2) 待排序的檔案,不一定與程式放在同一目錄下,且也沒有詢問要排序哪個檔,測試時放了2個檔案,都會打開,但只排序其中一個檔,應該要有選取檔案位置功能比較不會出錯
3) 這裡可以指定要排列的工作表的位置"整月統計" 或 "3",
應該是單一工作表排序,但會出現二次詢問,我測試2次輸入不同名稱,結果它只會排第2次輸入的工作表,單個工作表排序,應該只詢問一次就好
4) 多個工作表排序,
會出現1)起 & 2)迄的詢問,然後再出現詢問指定工作表名稱,我將它取消or確定,又會從頭再問一次,才開始執行排序,應該只問起 & 迄就可以了
5) 多個工作表排序,例如指定排2~8,但只會排2~7
6) 另一次測試指定排3~20,其第3個工作表名稱是1,第20個工作表是18,只排了18個,好像每次都不太一樣!
7) 雖然程式中有Application.Calculation = xlCalculationManual
但好像無法很快速排序,是因為排序都是比較慢的嗎?

TOP

        靜思自在 : 一句溫暖的話,就像往別人身上灑香水,自己會沾到兩三滴。
返回列表 上一主題