使用excelvba进行动态嵌套排序

使用excelvba进行动态嵌套排序,vba,excel,sorting,range,Vba,Excel,Sorting,Range,我来到这里是为了学习如何使用多个排序字段进行排序。它基本上是对键进行编号,并将它们设置为与排序字段相等 我想循环一个N大小的整数数组,根据数组中的值对一个范围进行排序。例如,如果我的工作表有100列数据,我可能希望根据第3、18和62列进行排序;所以N等于3。问题是我无法命名排序键“key”&I,因为我从1循环到N 到目前为止,我所拥有的: With Worksheets("SalesRep").Sort .Header = xlYes .MatchCase = False

我来到这里是为了学习如何使用多个排序字段进行排序。它基本上是对键进行编号,并将它们设置为与排序字段相等

我想循环一个N大小的整数数组,根据数组中的值对一个范围进行排序。例如,如果我的工作表有100列数据,我可能希望根据第3、18和62列进行排序;所以N等于3。问题是我无法命名排序键
“key”&I
,因为我从1循环到N

到目前为止,我所拥有的:

 With Worksheets("SalesRep").Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    for i=1 to myArrayLength
       SortFields.Add Key:=Range(cells(1,colNumArray(i)).address,cells(lastRow,colNumArray(i)).address)
    next i
    .Apply
End With
你有什么推荐吗?

试试以下方法:

Dim sht As WorkSheet

Set sht = .Worksheets("SalesRep")

With sht.Sort
    .SortFields.Clear  '<<<<< clear any previous
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    for i=1 to myArrayLength
       SortFields.Add Key:=sht.Range(sht.cells(1,colNumArray(i)), _
                                     sht.cells(lastRow,colNumArray(i)))

       'maybe cleaner as
       'SortFields.Add Key:=sht.Cells(1, colNumArray(i)).Resize(lastRow, 1)
    next i
    .Apply
End With
Dim sht作为工作表
设置sht=.Worksheets(“SalesRep”)
用短小排序
.SortFields.Clear'尝试以下操作:

Dim sht As WorkSheet

Set sht = .Worksheets("SalesRep")

With sht.Sort
    .SortFields.Clear  '<<<<< clear any previous
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    for i=1 to myArrayLength
       SortFields.Add Key:=sht.Range(sht.cells(1,colNumArray(i)), _
                                     sht.cells(lastRow,colNumArray(i)))

       'maybe cleaner as
       'SortFields.Add Key:=sht.Cells(1, colNumArray(i)).Resize(lastRow, 1)
    next i
    .Apply
End With
Dim sht作为工作表
设置sht=.Worksheets(“SalesRep”)
用短小排序

.SortFields.Clear'@TimWilliams补充道。我对几个变量使用了通用名称,但我认为这很清楚。基本上,在循环遍历数组中的每个值之后,我会应用排序字段。当运行该字段时会发生什么?没有错误消息,但它不会排序。“我试图用即时窗口来确定应用的排序字段,但结果却是空手而归。”TimWilliams补充道。我对几个变量使用了通用名称,但我认为这很清楚。基本上,在循环遍历数组中的每个值之后,我会应用排序字段。当运行该字段时会发生什么?没有错误消息,但它不会排序。我试图用即时窗口确定应用的排序字段,但结果却是空手而归。我没有意识到我必须在引用范围内重新引用该表。谢谢。我没有意识到我必须在参考范围内重新参考该表。非常感谢。