返回列表 上一主題 發帖

[發問] "排序"/"刪除整列"有沒有其它的程式寫法?

回復 11# Hsieh
版大您好,我用的是Excel 2010 format:
剛才所錄製的排序為:
  1.     Windows("BCM Order_Format.xlsx").Activate
  2.     Sheets("PO").Select
  3.     Range("D2").Select
  4.     ActiveWorkbook.Worksheets("PO").AutoFilter.Sort.SortFields.Clear
  5.     ActiveWorkbook.Worksheets("PO").AutoFilter.Sort.SortFields.Add Key:=Range( _
  6.         "D2:D600"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
  7.         xlSortNormal
  8.     ActiveWorkbook.Worksheets("PO").AutoFilter.Sort.SortFields.Add Key:=Range( _
  9.         "Z2:Z600"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
  10.         xlSortNormal
  11.     ActiveWorkbook.Worksheets("PO").AutoFilter.Sort.SortFields.Add Key:=Range( _
  12.         "H2:H600"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
  13.         xlSortNormal
  14.     ActiveWorkbook.Worksheets("PO").AutoFilter.Sort.SortFields.Add Key:=Range( _
  15.         "G2:G600"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
  16.         xlSortNormal
  17.     ActiveWorkbook.Worksheets("PO").AutoFilter.Sort.SortFields.Add Key:=Range( _
  18.         "E2:E600"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
  19.         xlSortNormal
  20.     With ActiveWorkbook.Worksheets("PO").AutoFilter.Sort
  21.         .Header = xlYes
  22.         .MatchCase = False
  23.         .Orientation = xlTopToBottom
  24.         .SortMethod = xlPinYin
  25.         .Apply
複製代碼
G大寫的據說只能至3組,所以我修改為以下5組的方法就行不通?
  1. With Workbooks("BCM Order_Format.xlsx")
  2. With .Sheets("PO")
  3.          .Range("A1").CurrentRegion.Sort Key1:=.Range("D2"), Order1:=xlAscending,
  4.           Key2:=.Range("Z2"), Order2:=xlAscending, _
  5.           Key3:=.Range("H2"), Order3:=xlAscending, _
  6.           Key4:=.Range("G2"), Order4:=xlAscending, _
  7.           Key5:=.Range("E2"), Order5:=xlAscending, _
  8.         Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:= xlTopToBottom, SortMethod:=xlStroke, _
  9.         DataOption1:=xlSortNormal, _
  10.         DataOption2:=xlSortNormal, _
  11.         DataOption3:=xlSortNormal, _
  12.         DataOption4:=xlSortNormal, _
  13.         DataOption5:=xlSortNormal
  14.     End With
  15.     End With
複製代碼
請問依我想要的,還有什麼方法可以用?

TOP

回復 10# PJChen
2010版本是可以多鍵排序,你所錄的程式碼即可
若要以2003排序限制,可利用排序欄位順序,使用迴圈去排列即可,但這要你說明欄位順序
學海無涯_不恥下問

TOP

回復 9# register313

原來如此,請問還有什麼程式寫法,比較符合我所要的?不要指定列收,只要欄位範圍,且可有5組以上排序的?
不要Range("A1:K36") 的寫法,有沒有另一種,例如:  A:K

TOP

回復 8# PJChen

.Range("A1").CurrentRegion.Sort Key1:=.Range("D2"), Order1:=xlAscending, _

使用excel內建之排序功能,排序鍵至多3組
排序鍵有3組以上,要用其他方法

TOP

回復 6# GBKEE

我又來了,救命!請幫我看一下!
我有多個工作表要用到sort,剛才你寫的排序程式好長,因為怕漏了某段字,所以我幫它作了分段,可是它完全不起作用
         .Range("A1").CurrentRegion.Sort Key1:=.Range("D2"), Order1:=xlAscending,
          Key2:=.Range("Z2"), Order2:=xlAscending, _
          Key3:=.Range("H2"), Order3:=xlAscending, _
          Key4:=.Range("G2"), Order4:=xlAscending, _
          Key5:=.Range("E2"), Order5:=xlAscending, _
        Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:= xlTopToBottom, SortMethod:=xlStroke, _
        DataOption1:=xlSortNormal, _
        DataOption2:=xlSortNormal, _
        DataOption3:=xlSortNormal, _
        DataOption4:=xlSortNormal, _
        DataOption5:=xlSortNormal

TOP

回復 6# GBKEE

真是太感謝了!我喜歡這個.

TOP

回復 5# PJChen
.Range("A1:K36")  -> .Range("A1").CurrentRegion  就像 接龍 一直擴充連接有資料的欄及列
CurrentRegion 屬性   傳回 Range 物件,該物件代表目前的區域。目前區域是指以任意空白列及空白欄的組合為邊界的範圍

TOP

回復 4# GBKEE
G大,
想請問.Range("A1:K36") 的寫法,有沒有另一種,例如:  A:K (我只是表達概念,程式碼我不會寫)
因為資料會不斷增加,用.Range("A1:K36") 對我來說不是那麼理想.

TOP

回復 3# PJChen
試看看 2003的排序方式
  1.     With Windows("Pre-paid_HK Cost.xlsx").Worksheets("NONE NE")
  2.         .Range("A1:K36").Sort Key1:=.Range("A2"), Order1:=xlAscending, Key2:=.Range( _
  3.         "E2"), Order2:=xlAscending, Key3:=.Range("D2"), Order3:=xlAscending, _
  4.         Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:= _
  5.         xlTopToBottom, SortMethod:=xlStroke, DataOption1:=xlSortNormal, _
  6.         DataOption2:=xlSortNormal, DataOption3:=xlSortNormal
  7.     End With
複製代碼

TOP

回復 2# GBKEE

G版大,
麻煩你了. VBA TEST 2.zip (27.77 KB)

TOP

        靜思自在 : 能善用時間的人,必能掌握自己努力的方向。
返回列表 上一主題