我一直在研究使用自定义排序顺序使用Range.Sort
对数据块进行排序的代码。我试图记录宏并在线查看,但对这个问题更加困惑。
key1:=
参数;是单个单元格(例如Range("A1")
)还是整列?OrderCustom:=
中使用自定义排序顺序?Range
中的Range.Sort
可以在任何位置,只要在一个连续的块中,对吗?这是我正在使用的代码:
Sub Test()
Dim quantity As Variant
quantity = 2 + WorkshetFunction.Count(Range("A" & 3, "K" & 900))
With Range("A" & 3, "K" & quantity)
.Sort key1:=Range("A" & 3)
Order:=xlAscending
Header:=xlNo
OrderCustom:="VALID, GOOD, DUE, OVERDUE, WAY OVERDUE, MISSING"
'> This is the order in which I want the items on this list sorted by.
End With
End Sub
Range("A" & 3, "K" & quantity)
是指一组数据,其中包含"A"
上由其校准到期日期确定的某些项目的“状态”,以及与此目的无关的其他数据,不能自由分享。我要问的是帮助您了解.Sort
方法的内部工作原理。谢谢!
答案 0 :(得分:0)
给
Sub SortItOut()
Dim rng As Range, sh As Worksheet
Set sh = Sheets("Sheet1")
With sh
Set rng = .Range("A3:K" & .Cells(.Rows.Count, "K").End(xlUp).Row)
With rng
sh.Sort.SortFields.Clear
sh.Sort.SortFields.Add Key:=Range("A3") _
, SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"VALID,GOOD,DUE,OVERDUE,WAY OVERDUE,MISSING", DataOption:=xlSortNormal
End With
With .Sort
.SetRange rng
.Orientation = xlTopToBottom
.Apply
End With
End With
End Sub