kir*_*off 2 sorting excel vba range excel-vba
你能帮助我理解这个snippset:
首先,似乎添加了排序规则
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
Run Code Online (Sandbox Code Playgroud)
然后,我了解以下代码有效地运行排序
With MainSheet.Sort
.SetRange Range("A" & lFrom & ":" & GEN_REV_END & lTo)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Run Code Online (Sandbox Code Playgroud)
这种解释是否正确 - 首先需要添加排序规则,然后将其应用于第二部分?
然后,我们为什么要在第二部分中定义一个排序范围
With MainSheet.Sort
.SetRange Range("A" & lFrom & ":" & GEN_REV_END & lTo)
End With
Run Code Online (Sandbox Code Playgroud)
是不是已经在我们排序的规则中了Key:=Range(vSortKeys(lI, 1) & 2)?有效运行哪种细胞范围?
排序正在应用于指定的范围Sort.SetRange.该Key参数Sort.SortFields.Add允许您指定将决定soring的订单字段.每个字段可以只是具有列标题的单元格.您可以为多个排序级别添加多个键.
举个例子,如果您在单元格中有数据A1:C10并且想要以升序方式A对其进行排序,请将列中的信息作为排序键,您可以这样设置列A中的数据作为键:
MainSheet.Sort.SortFields.Add Key:=Range("A1") '("A1:A10") will also work
Run Code Online (Sandbox Code Playgroud)
然后,您可以指定将根据该键排序的范围,如下所示:
MainSheet.Sort.SetRange Range("A1:C10")
Run Code Online (Sandbox Code Playgroud)