【问题标题】: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 子句中指定的工作表。否则,您将使用 不合格的范围,该范围指的是当前活动的工作表。
【解决方案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