按数量增加4

时间:2017-11-30 21:43:15

标签: excel vba excel-vba

我有一个排序代码,可以按照几个条件对我的数据进行排序。但是,每次数字应该增加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字段中修改我需要增加四个而不仅仅增加顺序的代码?

1 个答案:

答案 0 :(得分:2)

关于帮助栏的@YowE3K评论是健全的建议。

另一种选择:使用自定义排序顺序。

如果您的列表很小且易于管理,您可以手动编写它:

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

示例:

enter image description here

如果您的列表较大,您可以通过编程方式生成自定义订单字符串,以满足您需要的大小并将其设置为变量。

CustomOrder:=mySortString