如何使用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
屏幕截图