首页 > 解决方案 > 使用 DDMMYY 月末问题排序日期

问题描述

我创建了一个子例程,它将 ActivityDate 列从最小到最大排序。日期的格式类似于 DDMMYY,例如,010621 是本月的第一个,300621 是最后一个。

我的问题是我每周进行报告,这意味着有时我会得到上个月的最后一天/几天。发生这种情况时,这些日期将被放置在底部,因为 30 在数字上位于 01 之后,例如 310521 将出现在电子表格的底部,010621 将首先出现。

我知道我可以为月份添加一列,=MID(date, 3, 2)首先使用月份编号并对其进行排序,但是有没有更简单的方法可以做到这一点?

这是我对日期进行排序的代码:

Sub SortDates()

    Dim ActDate As Long
    Dim ActDateLetter As String
    
    sheet = "Overall Activity"

    With ThisWorkbook.Worksheets(sheet).Rows(1)
        Set b = .Find("ActivityDate", LookIn:=xlValues)
        ActDate = b.Column
        
    'Convert To Column Letter
    ActDateLetter = Split(Cells(1, ActDate).Address, "$")(1)
    
    End With
    
    ThisWorkbook.Worksheets(sheet).Activate

    ThisWorkbook.Worksheets(sheet).Columns(ActDate).Sort Key1:=Range(ActDateLetter & "1") _
    , Order1:=xlAscending, Header:=xlYes

End Sub

标签: excelvba

解决方案


推荐阅读