我有一个排序代码,可以按照几个条件对我的数据进行排序。但是,每次数字应该增加4,而不是仅仅增加顺序。举个例子,我可能有数字0,1,4,5,8和9,但我希望它们列为0,4,8,然后是1,5,9。
Dim num As Range
Dim sortcode As Range
Dim sortnum As Range
Dim firstsort As Range
rangevalue = ("I2:I" & rlastrow)
Set firstsort = Range(rangevalue)
rangevalue = ("L2:L" & rlastrow)
Set sortcode = Range(rangevalue)
rangevalue = ("J2:J" & rlastrow)
Set sortnum = Range(rangevalue)
wr.Sort.SortFields.Clear
wr.Sort.SortFields.Add Key:=firstsort _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
wr.Sort.SortFields.Add Key:=sortcode _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
wr.Sort.SortFields.Add Key:=sortnum _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With wr.Sort
.SetRange Range("A1:L" & rlastrow)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
是否可以在sortnum字段中修改我需要增加四个而不仅仅增加顺序的代码?
答案 0 :(得分:2)
另一种选择:使用自定义排序顺序。
如果您的列表很小且易于管理,您可以手动编写它:
wr.Sort.SortFields.Add Key:=firstsort _
, SortOn:=xlSortOnValues, Order:=xlAscending, _
CustomOrder:= "0,4,8,12,16,1,5,9,13,17,2,6,10,14,18,3,7,11,13,19", _
DataOption:=xlSortNormal
这只排序0到19
示例:
如果您的列表较大,您可以通过编程方式生成自定义订单字符串,以满足您需要的大小并将其设置为变量。
CustomOrder:=mySortString