如何使用VBA获得excel单元格的月份和date?

所以这是我的情况:

我有一个思科login和注销报告,将我的数据导出到Excel中。 大! 唯一的问题是,它在一天内给我多次login时间,所以我试图在第一次login尝试,并在那一天扔掉其余的一天,并转移到下一个。

该单元由思科预先格式化为m/d/yyyy" "h\:mm\:ss AM/PM 。 我在教自己的VBA,我想从这个单细胞得到m / d / yyyy,然后和其他细胞进行比较。 如果date存在,我想删除这些行。

例:

 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循环中的第二个和第三个条目。

让我知道这是不是很清楚,谢谢你的帮助!

你提到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 

屏幕截图

在这里输入图像说明