如何对常规日期格式进行排序



我有一个数据表,它看起来像这样,通用格式:

日期
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;@"

最新更新