我有MMM-DD-YYYY
格式的一些日期列,例如Jan-03-2014
,但是当我使用它排序时:
ActiveSheet.Range("A3:Z" & rowNum).Sort Key1:=ActiveSheet.Columns("E")
它不按实际日期排序。我意识到它将它视为字符串,并根据第一个字母对它们进行排序。无论如何都要按实际日期排序吗?
由于
答案 0 :(得分:1)
你可以通过在Excel中录制宏来实现这一点,它给我这样的东西,并以“MMM-DD-YYYY”的格式对日期进行排序
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A1:C1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"janvier,février,mars,avril,mai,juin,juillet,août,septembre,octobre,novembre,décemb re" _
, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A1:C1")
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
答案 1 :(得分:1)
基于John的建议,要以MMM格式对日期进行排序,我需要创建一个新列,使其成为日期并根据该列对其进行排序,我使用下面的代码:
For i = 3 To rowNum
If ActiveSheet.Cells(i, 5).Value <> vbNullString Then
ActiveSheet.Cells(i, 8).Value = CDate(ActiveSheet.Cells(i, 5).Value)
End If
Next i
ActiveSheet.Range("A3:Z" & rowNum).sort Key1:=ActiveSheet.Columns("H"), Header:=xlNo
ActiveSheet.Columns("H").Delete
想到我应该分享它,非常感谢!