Excel SortFields添加然后sorting

你能帮我理解这个问题吗?

首先,似乎添加了sorting规则

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 

然后,我明白下面的代码是有效地运行sorting

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

这个解释是否正确 – 需要先添加一个sorting规则,然后将其与第二部分一起使用?

那么,为什么我们要在第二部分定义一个范围,

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

是不是已经在规则中,我们sorting为Key:=Range(vSortKeys(lI, 1) & 2) ? 有效运行哪种单元格?

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

举个例子,如果在单元格A1:C10有数据,并且想要按升序对数据进行sorting,将A列中A信息作为sorting的关键字,则可以这样做,将A列中A数据设置为关键字:

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

然后,您可以指定将基于该键sorting的范围如下:

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