按降序对一列进行排序,单元格数量未知

时间:2018-10-11 14:51:06

标签: excel vba

我正在尝试对A列进行降序排序,其中单元格数未知。

获取运行时错误-对象'_Worksheet'的方法'排序'失败。

直到我购买到具有不同版本Excel的新笔记本电脑时,此代码才有效。

lastrow = Cells(Rows.Count, 1).End(xlUp).Row

Range("A1").Select
ActiveWorkbook.Worksheets("New Working").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("New Working").Sort.SortFields.Add Key:=Range("A1") _
    , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("New Working").Sort
    .SetRange Range("A2:AT" & lastrow)
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

1 个答案:

答案 0 :(得分:1)

问题可能是由于您在获取“最后一行”的值时没有完全限定工作表的事实,因此Excel将查看ActiveSheet而不是您想要的ActiveSheet,我建议使用类似以下代码完全合格:

Sub foo()
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("New Working")
lastrow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
ws.Sort.SortFields.Clear
ws.Sort.SortFields.Add Key:=ws.Range("A1"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ws.Sort
        .SetRange ws.Range("A1:AT" & lastrow)
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub