我正在将AT列中的数据排序为AX,并为此编写以下代码。但仍停留在"底线";。应用";。我不明白我犯了什么错误?请提出解决方案。
Sub Yearly2_5DataArrangeOldestToNewest()
Dim shDayData As Worksheet
Set shDayData = ThisWorkbook.Worksheets("DayData")
shDayData.Range("AT:AX").Select
shDayData.Sort.SortFields.Clear
shDayData.Sort.SortFields.Add Key:=Range("AT2:AX3610"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With shDayData.Sort
.SetRange Range("AT1:AX3610")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply 'HERE IS PROBLEM
End With
shDayData.Range("AT:AX").Select
Selection.NumberFormat = "[$-14009]dd/mm/yy;@"
shDayData.Range("AX2").Select
End Sub
只是为了扩展Rory和pᴇʜ的评论,你需要小心如何定义排序范围和关键字范围,如果你想对所有五列进行排序,你需要将每列定义为一个单独的关键字。
Sub Yearly2_5DataArrangeOldestToNewest()
Dim dataRange As Range
Dim keyRange(1 to 5) As Range
With ThisWorkbook.Worksheets("DayData")
Set dataRange = .Range("AT2:AX360")
Set keyRange(1) = .Range("AT3:AT360")
Set keyRange(2) = .Range("AU3:AU360")
Set keyRange(3) = .Range("AV3:AV360")
Set keyRange(4) = .Range("AW3:AW360")
Set keyRange(5) = .Range("AX3:AX360")
With .Sort
With .SortFields
.Clear
.Add2 Key:=keyRange(1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Add2 Key:=keyRange(2), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Add2 Key:=keyRange(3), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Add2 Key:=keyRange(4), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Add2 Key:=keyRange(5), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
End With '.SortFields
.SetRange dataRange
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With '.Sort
End With 'ThisWorkbook.Worksheets("DayData")
End Sub