VBA自定义排序

SortField.clear 方法

清除所有 SortFields 对象。

SortFields.Add 方法

创建新的排序字段,并返回一个 SortFields 对象。

语法:expression.SortFields.add(key、 SortOn、 Order、 CustomOrder、 DataOption)

'Key:指定排序字段的范围或单元格。
'SortOn:指定排序方式。例如 xlSortOnValues 用于按值排序,xlSortOnCellColor 用于按单元格颜色排序等。默认值为 xlSortOnValues
'Order:指定排序顺序。例如 xlAscending 用于升序排序,xlDescending 用于降序排序等。默认值为 xlAscending
'CustomOrder:指定自定义排序顺序。默认值为空,表示没有自定义排序顺序。
'DataOption:指定排序选项。例如 xlSortNormal 用于一般排序,xlSortTextAsNumbers 用于将文本作为数字排序等。默认值为 xlSortNormal

注:

`SortFields.Add` 和 `SortFields.Add2` 都是用于向排序对象的 `SortFields` 集合中添加新的排序字段。

`SortFields.Add` 方法已经存在于早期版本的 Excel 中,而 `SortFields.Add2` 方法是在 Excel 2002 中引入的。两个方法的功能是相同的,都用于向排序对象添加一个新的排序字段。

你可以根据具体的Excel版本和需求来选择使用 `SortFields.Add` 或 `SortFields.Add2` 方法。通常情况下,使用较新的 `SortFields.Add2` 方法是更安全的选择,尤其是对于较新的Excel版本和功能。

学习自定义排序要了解的知识点:
点击跳转1
点击跳转2

e.g:

Sub 三个条件自定义排序() 
    ActiveSheet.Sort.SortFields.Clear   '先清除所有排序
    '楼层排序
    ActiveSheet.Sort.SortFields.Add2 _
    Key:=Range("J2:" & Range("J10000").End(xlUp).Address), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    '开向排序
    ActiveSheet.Sort.SortFields.Add2 _
    Key:=Range("S2:" & Range("S10000").End(xlUp).Address), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    '序号排序
    ActiveSheet.Sort.SortFields.Add2 _
    Key:=Range("W2:" & Range("W10000").End(xlUp).Address), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
    '自定义排序选项里边的设置
    With ActiveSheet.Sort
        .SetRange Range("F1:W176")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlLeftToRight    'xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("H7").Select
End Sub

ActiveSheet.AutoFilter.Sort.SortFields.Add2 是在已经应用了自动筛选的工作表上使用的,其中 AutoFilter 是筛选操作的关键部分。该方法用于向自动筛选后的筛选结果中添加排序字段。

ActiveSheet.Sort.SortFields.Add2 是在未应用自动筛选的工作表上使用的。它直接作用于排序操作而不考虑筛选。

如果你尝试在未使用自动筛选的工作表上使用 ActiveSheet.AutoFilter.Sort.SortFields.Add2,可能会导致不起作用的结果。

 

在 With ActiveSheet.AutoFilter.Sort 中,.Header、.MatchCase 和 .SortMethod 这些属性都是可选的。你可以根据自己的需求选择是否设置它们。
以下是对每个属性的解释:
.Header: 用于指定排序区域是否包含标题行。如果设置为 xlYes,则排序区域将包含标题行;如果设置为 xlNo,则排序区域不包含标题行。如果不设置该属性,默认值是 xlYes。
.MatchCase: 用于指定排序是否区分大小写。如果设置为 True,则排序是区分大小写的;如果设置为 False,则排序是不区分大小写的。如果不设置该属性,默认值是 False。
.SortMethod: 用于指定排序所使用的排序方法。可以使用以下常量之一来设置该属性:xlPinYin(拼音排序)、xlStroke(笔画排序)和 xlUnicode(Unicode 排序)。如果不设置该属性,默认值是 xlPinYin。
如果你不设置这些属性,Excel 将使用默认值进行排序。你可以根据自己的需求决定是否需要更改这些属性。
因此,在 With ActiveSheet.AutoFilter.Sort 中的每个属性都是可选的,根据需要进行设置。

posted @ 2023-07-11 18:30  iZJ"Qq4577105  阅读(477)  评论(0编辑  收藏  举报