返回列表 上一主題 發帖

[發問] Excel VBA條件排序問題

回復 10# 蒼雪

從畫面裡 常用改"公式" ,再手動改"自動"
google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

回復 11# hcm19522

55.png (143.08 KB)

55.png

google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

回復 12# hcm19522


    經過嘗試,結果還是跟之前一樣...出來的結果只有一個
    不會正常的排序... ...

TOP

回復 1# 蒼雪
用VBA解如下:
Sub test()
    arr = Array("L20", "L10", "L30")
    Application.AddCustomList listArray:=arr
    n = Application.CustomListCount
    For r = 1 To 9
        Cells(r, 2).Value = Split(Cells(r, 1).Value, "[")(0)
        Cells(r, 3).Value = Split(Split(Cells(r, 1).Value, "/")(0), "[")(1)
        Cells(r, 4).Value = Split(Split(Cells(r, 1).Value, "/")(1), "]")(0)
    Next r
    [A1].CurrentRegion.Sort Key1:=[B1], OrderCustom:=n + 1, key2:=[C1], key3:=[D1]
    Application.DeleteCustomList n
    Columns("B:D").Delete
End Sub

另外底下順序是否反了?

L20[7.5/B.5]S
L20[7/C]N

應該是:
L20[7/C]N
L20[7.5/B.5]S

TOP

回復 14# Kubi


抱歉,看了一下,是我順序放錯了。
這個除了排序這個儲存格外,相同row可以一起移動嗎?

TOP

回復 15# 蒼雪
可能要先了解2個問題:
1.排序索引欄是在那一欄?例如:本程式是以A欄做為排序條件。
2.各欄第1列有沒有抬頭?

本巨集是透過輔助欄來排序的,所以要先釐清欄位位置及數量,如能上傳檔案更好。

TOP

回復 16# Kubi


抱歉,該檔案我沒辦法丟出來...公司內不可帶出

會有 A、B、C、D欄
主要排序索引欄位會在C欄
各欄第一位會有抬頭

TOP

回復 17# 蒼雪
請參考
  1. Sub test()
  2.     arr = Array("L20", "L10", "L30")
  3.     Application.ScreenUpdating = False
  4.     Application.AddCustomList listArray:=arr
  5.     n = Application.CustomListCount
  6.     er = [C65536].End(3).Row
  7.     For r = 2 To er
  8.         Cells(r, 5).Value = Split(Cells(r, 3).Value, "[")(0)
  9.         Cells(r, 6).Value = Split(Split(Cells(r, 3).Value, "/")(0), "[")(1)
  10.         Cells(r, 7).Value = Split(Split(Cells(r, 3).Value, "/")(1), "]")(0)
  11.     Next r
  12.     Range("A2:G" & er).Sort Key1:=[E2], OrderCustom:=n + 1, key2:=[F2], key3:=[G2]
  13.     Application.DeleteCustomList n
  14.     Columns("E:G").Delete
  15.     Application.ScreenUpdating = True
  16. End Sub
複製代碼

TOP

回復 18# Kubi


抱歉,我學得不是很多。
想請問你,這整個流程的說明可以嗎?

尤其是拆開之後,又是怎麼將他們組合?

TOP

回復 19# 蒼雪
Q1.流程說明:
1.因你的第一順位排序(L20, L10, L30)非常規性,因此先將你的規則套入自訂排序清單中。
2.將C欄排序索引欄的資料,利用Split資料剖析方式拆解至E、F、G的輔助欄內。
3.利用E、F、G欄為索引,並依其順序分3次重新排序所有資料,請注意第1次是用自訂清單來排序。
4.排序完成後,移除剛置入的自訂排序清單,也刪除不需再使用的E、F、G欄。

Q2.拆開之後,又是怎麼將他們組合?
由上述所知,程式只有拆解並沒有再將它組合喔。

TOP

        靜思自在 : 發脾氣是短暫的發瘋。
返回列表 上一主題