我想根据第二行到最后一列(新旧)的值(日期)对工作表进行排序。
我编写了代码,但始终存在错误:1004,排序引用无效。有人碰巧知道解决方案吗?
谢谢。
Workbooks("Task2.xlsm").Worksheets("Data").Column("A:CA").Sort key1:=Range("H2"), order1:=xlDescending, Header:=xlYes
答案 0 :(得分:0)
key1:=Range("H:H")?
吗?
我假设H列是你的关键,而不是单个H2。
答案 1 :(得分:0)
将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
子句中指定的工作表。如果没有这个,您将使用不合格的范围 whcih引用当前有效的工作表。
答案 2 :(得分:0)
我录制了一个宏,我找到了答案(可以简化):
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