2017-03-01 53 views
0

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

回答

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 
0

做你想做key1:=Range("H:H")? 我假设H列是你的钥匙,而不是单个细胞H2。

+0

谢谢桑杰! – Francis

0

变化ColumnColumns(错字中发布您的代码,我认为)

然后你就会有一个运行时错误,每当Worksheets("Data")是不是当前活动工作表。最好的办法是完全避免这种类型的错误,并用的Range("H2")前whcih使得指明确在指定的纸张合格范围

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

通知的.(点)总是工作with条款。没有这一点,你正在使用不合格的范围,它指的是当前活动的工作表。

+0

谢谢A.S.H.我也找到了答案。 – Francis

相关问题