VBA 排序之sort
在日常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
知乎找来的一张关于每个方法对应的内容