对数据进行sorting,增加4

我有一个sorting代码,通过几个标准来sorting我的数据。 但是,这些数字应该每次增加四位,而不是按照顺序递增。 作为一个例子,我可能有数字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字段中修改我的代码,这将需要增加四个,而不仅仅是增加顺序?

@YowE3K关于帮手列的评论是很有build议的。

另一个选项:使用自定义sorting顺序。

如果你的列表很小并且易于pipe理,你可以像这样手动编写它:

 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 

这只能sorting0到19

例:

在这里输入图像说明


如果你的列表比较大,你可以通过编程的方式生成你自定义的命令string,使其大到你需要的大小,并将其设置为一个variables

 CustomOrder:=mySortString