Excel SortFields添加然后排序

时间:2014-06-22 14:26:58

标签: excel vba sorting excel-vba range

你能帮助我理解这个信息:

首先,似乎添加了排序规则

MainSheet.Sort.SortFields.Clear
For lI = 1 To vSortKeys(0, 1)   
    MainSheet.Sort.SortFields.Add Key:=Range(vSortKeys(lI, 1) & 2), 
       SortOn:=xlSortOnValues, Order:=vSortKeys(lI, 2), DataOption:=xlSortNormal
Next

然后,我了解以下代码实际上正在运行排序

With MainSheet.Sort
    .SetRange Range("A" & lFrom & ":" & GEN_REV_END & lTo)
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

这种解释是否正确 - 首先需要添加排序规则,然后将其应用于第二部分?

然后,我们为什么要在第二部分中定义一个排序范围,在

With MainSheet.Sort
    .SetRange Range("A" & lFrom & ":" & GEN_REV_END & lTo)

End With

我们排序Key:=Range(vSortKeys(lI, 1) & 2)的规则是否已经存在?有效运行哪种细胞范围?

1 个答案:

答案 0 :(得分:6)

排序正在应用于Sort.SetRange中指定的范围。 Key中的Sort.SortFields.Add参数允许您指定将确定评分顺序的字段。每个字段可以只是具有列标题的单元格。您可以为多个排序级别添加多个键。

举个例子,如果您在单元格A1:C10中有数据并且想要以升序方式对其进行排序,请将列A中的信息作为排序键,您可以执行此操作将列A中的数据设置为键:

MainSheet.Sort.SortFields.Add Key:=Range("A1") '("A1:A10") will also work

然后您可以指定将根据该键排序的范围,如下所示:

 MainSheet.Sort.SetRange Range("A1:C10")