【问题标题】:Sort a sheet by the value of a column since the second line从第二行开始按列的值对工作表进行排序
【发布时间】:2017-07-21 01:21:29
【问题描述】:

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

【问题讨论】:

    标签: vba excel sorting runtime-error excel-2007


    【解决方案1】:

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

    【讨论】:

    • 谢谢桑杰!
    【解决方案2】:

    Column 更改为Columns(我认为在发布您的代码时出现错误)

    然后,只要Worksheets("Data") 不是当前活动的工作表,就会出现运行时错误。最好的办法是完全避免此类错误,并且始终使用限定范围

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

    注意Range("H2") 前面的.(点)使其明确引用with 子句中指定的工作表。否则,您将使用 不合格的范围,该范围指的是当前活动的工作表。

    【讨论】:

    • 谢谢 A.S.H.我也找到了答案。
    【解决方案3】:

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

        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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-25
      • 1970-01-01
      • 2021-05-03
      相关资源
      最近更新 更多