今日事,今日毕,勿将今事待明日|

零哭谷

园龄:6年粉丝:7关注:4

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 中国大陆许可协议进行许可。

posted @   零哭谷  阅读(6282)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起