【问题标题】:How do I get the month and day in excel cell using VBA?如何使用 VBA 在 excel 单元格中获取月份和日期?
【发布时间】:2026-01-30 17:30:02
【问题描述】:

所以这是我的场景:

我有一份思科登录和注销报告,可将我的数据导出到 Excel 中。伟大的!唯一的问题是它在一天内给了我多次登录时间,所以我试图只获得第一次登录尝试,并在那一天扔掉其余的,然后转到下一天。

该单元格由 Cisco 预先格式化为 m/d/yyyy" "h\:mm\:ss AM/PM。我正在自学 VBA,我想从该单个单元格中获取 m/d/yyyy,并将其与其他单元格进行比较。如果日期存在,我想删除这些行。

例子:

5/2/2012 2:55:12PM
5/2/2012 3:00:00PM
5/2/2012 3:01:00PM
5/3/2012 2:56:01PM

我想删除 for 循环中的第二个和第三个条目。

如果不清楚,请告诉我,非常感谢您的帮助!

【问题讨论】:

    标签: vba date excel


    【解决方案1】:

    您提到preformatted by Cisco as m/d/yyyy" "h\:mm\:ss AM/PM. 但是上面的示例与该格式不匹配。你给的样品应该是

    5/2/2012 2:55:12 PM
    5/2/2012 3:00:00 PM
    5/2/2012 3:01:00 PM
    5/3/2012 2:56:01 PM
    

    PM之前有一个空格

    下面的代码示例基于m/d/yyyy h\:mm\:ss AM/PM格式

    代码

    Sub Sample()
        Dim ws As Worksheet
        Dim lRow As Long, i As Long
        Dim delRange As Range
    
        '~~> Set this to the sheet where you have the data
        Set ws = Sheets("Sheet1")
    
        With ws
            '~~> Sort the data in ascending order
            .Range("A:A").Sort key1:=.Range("A1"), order1:=xlAscending
    
            '~~> Get the last row
            lRow = .Range("A" & .Rows.Count).End(xlUp).Row
    
            '~~> loop through the cells
            For i = 2 To lRow
                '~~> Check if date matches
                If Application.Evaluate("=DATE(YEAR(A" & i & "),MONTH(A" & i & "),DAY(A" & i & "))") = _
                Application.Evaluate("=DATE(YEAR(A" & i - 1 & "),MONTH(A" & i - 1 & "),DAY(A" & i - 1 & "))") Then
                    '~~> Check if the value is greater
                    If .Range("A" & i).Value > .Range("A" & i - 1).Value Then
                        '~~> identify cells to delete
                        If delRange Is Nothing Then
                            Set delRange = .Range("A" & i)
                        Else
                            Set delRange = Union(delRange, .Range("A" & i))
                        End If
                    End If
                End If
            Next i
    
            '~~> Delete cells
            If Not delRange Is Nothing Then delRange.Delete
        End With
    End Sub
    

    屏幕截图

    【讨论】:

    • 我明白了...我会试试这个。关于您对格式不匹配的评论,我只是复制了在 Excel 中输入的格式,并复制了几个单元格作为示例。我会告诉你我得到了什么,非常感谢!
    • 不用担心。让我知道。如果PM 之前没有空格,那么我们将不得不稍微修改代码。
    • @siddharth 哇!这做到了!太感谢了!我很好奇,您能否指出正确的方向以更好地理解 =Date 您在评估函数中的内容?我将不得不通读几遍才能弄清楚并更好地理解!为你 +1!
    • Excel Help 在解释它的本机功能时是自给自足的 :) 免费F1 启动帮助。如果您还有任何问题,请告诉我。
    最近更新 更多