我想在VBA中排序超过3列。当我添加key4时,它显示"未找到命名参数。"我怎么处理这个?这是我的代码:
Private Sub SubLieutenant_Click()
Dim LastRow As Long
LastRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Range("F6:F" & LastRow).Formula = "=DateDif(C6, Today(),""y"")+DateDif(E6, Today(), ""d"")/30"
Range("A6").Sort key1:=Range("F6"), order1:=xlDescending, key2:=Range("E6"), order2:=xlAscending, key3:=Range("D6"), order3:=xlAscending, key4:=Range("C6"), order4:=xlAscending, Header:=xlYes
End Sub
答案 0 :(得分:1)
使用下面提到的行进行排序。在不同的列上对数据进行两次排序。
Range("A6").Sort key1:=Range("C6"), order1:=xlAscending, Header:=xlYes
Range("A6").Sort key1:=Range("F6"), order1:=xlDescending, _
key2:=Range("E6"), order2:=xlAscending, _
key3:=Range("D6"), order3:=xlAscending, Header:=xlYes
答案 1 :(得分:0)
你的例子在排序一个单元格时没有多大意义吗?
但是对于一个真实的例子,你只需先选择实际范围 然后单独添加排序键而不是一行
With ActiveSheet
.Sort.SortFields.Add Key:=Range("F2:F6"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=Range("E2:E6"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=Range("D2:D6"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=Range("C2:C6"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
End With
With ActiveSheet.Sort
.SetRange Range("A1:G6")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With