VBA 排序之sort
在日常VBA中,自带的sort函数可以定义三个排序字段(key值)
举例代码如下:
1 2 3 4 5 6 7 8 9 10 11 | 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函数换一种写法,用里面自定义排序,可以添加多个排序的字段
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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 |
知乎找来的一张关于每个方法对应的内容
本文作者:死了也要PY
本文链接:https://www.cnblogs.com/Young-shi/p/12845994.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步