我有一个数据表,它看起来像这样,通用格式:
日期 |
---|
01.02.2020 |
2020年1月2日 |
2021年2月1日 |
2021年1月2日 |
我终于找到了一个不错且高效的解决方案,我从@Siddharth Rout这里得到了这个解决方案:https://stackoverflow.com/questions/67315273/can-cdate-be-used-on-a-range-without-a-for-l[oop][1]
Dim rng As Range
Dim sAddr As String
Dim lRow As Long
Dim ws As Worksheet
With ws
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
Set rng = .Range("A:A" & lRow)
sAddr = rng.Address
rng = Evaluate("index(DATE(RIGHT(" & sAddr & _
",4),MID(" & sAddr & ",4,2),LEFT(" & _
sAddr & ",2)),)")
End With
With ws.Sort
.SortFields.Add Key:=ws.Range("A1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange rng
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
rng.NumberFormat = "dd.mm.yyyy;@"