从第二行开始按列的值对 sheet 进行排序

Sort a sheet by the value of a column since the second line

我想根据从第二行到最后一列(新旧)的值(日期)对 sheet 进行排序。
我写了代码,但总是出现错误:1004,排序参考无效。有人碰巧知道解决方案吗?
谢谢。
Workbooks("Task2.xlsm").Worksheets("Data").Column("A:CA").Sort key1:=Range("H2"), order1:=xlDescending, Header:=xlYes

你要吗key1:=Range("H:H")? 我假设 H 列是您的键,而不是单个单元格 H2。

Column 更改为 Columns(我认为在发布代码时出现错别字)

那么只要 Worksheets("Data") 不是当前活动的工作 sheet,您就会遇到运行时错误。最好的办法是完全避免此类错误,始终 使用限定范围

With Workbooks("Task2.xlsm").Worksheets("Data")
    .Column("A:CA").Sort key1:=.Range("H2"), order1:=xlDescending, Header:=xlYes
End with
                              ^^^^

注意 Range("H2") 前面的 .(点),这使得它 明确地 指向 sheet 中指定的 sheet 16=] 子句。否则,您将使用 不合格范围 whcih 指的是当前活动的 sheet.

我录制了一个宏,我找到了答案(可以简化):

    Workbooks("Task2.xlsm").Worksheets("Data").AutoFilter.Sort.SortFields.Clear
    Workbooks("Task2.xlsm").Worksheets("Data").AutoFilter.Sort.SortFields.Add Key:=Range("H1"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortTextAsNumbers
    With Workbooks("Task2.xlsm").Worksheets("Data").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With