在日常VBA中,自帶的sort函數可以定義三個排序字段(key值)
舉例代碼如下:
Sub test() With Worksheets("SUMMARY OF DEPOT INVENTORY").Range("c10:o245") .Sort key2:=Worksheets("SUMMARY OF DEPOT INVENTORY").Range("d10"), _ key3:=Worksheets("SUMMARY OF DEPOT INVENTORY").Range("e10"), _ key1:=Worksheets("SUMMARY OF DEPOT INVENTORY").Range("k10"), _ order1:=xlAscending, _ order2:=xlAscending, _ order3:=xlAscending, _ Header:=xlYes End With End Sub
但是遇到要多條件排序的話,排序字段超出3個就比較麻煩了,需要多次排序,
不過sort函數換一種寫法,用里面自定義排序,可以添加多個排序的字段
Sub test3() With ActiveWorkbook.Worksheets("SUMMARY OF DEPOT INVENTORY") .Sort.SortFields.Clear '清空自定義排序的規則 '增加4個key值 .Sort.SortFields.Add Key:=.Range("K10"), SortOn:=xlSortOnValues, Order:=xlAscending .Sort.SortFields.Add Key:=.Range("d10"), SortOn:=xlSortOnValues, Order:=xlAscending .Sort.SortFields.Add Key:=.Range("e10"), SortOn:=xlSortOnValues, Order:=xlAscending .Sort.SortFields.Add Key:=.Range("n10"), SortOn:=xlSortOnValues, Order:=xlAscending '設置表格排序內容的范圍 .Sort.SetRange Range("a10:n245") '表頭是否包含 .Sort.Header = xlYes '執行 .Sort.Apply End With End Sub
知乎找來的一張關於每個方法對應的內容