EXCEL VBA:仅比较date和月份

我试图比较下面的时间间隔只有一天:

表格(“DATA”)。范围(“H:H”)。NumberFormat =“mm / dd / yyyy hh:mm am / pm”

我发现自己有一个IF函数的解决scheme,包含在许多其他IF中

If Sheets("Data").Range("i" & i).Value <> "N/A" And Sheets("Data").Range("K" & i).Value <> "N/A" Then If Day(Sheets("Data").Range("i" & i)) = Day(Sheets("DATA").Range("K" & i)) Then Sheets("Data").Range("S" & i).Value = "Equals" ElseIf Day(Sheets("Data").Range("i" & i)) > Day(Sheets("DATA").Range("K" & i)) Then Sheets("Data").Range("S" & i).Value = "Later" Else: Sheets("Data").Range("S" & i).Value = "Earlier" End If Else: Sheets("Data").Range("S" & i).Value = "N/A" End If 

这似乎是诀窍 – 比较只有一天,从所有的date间隔和写S列是同一天,晚些时候,或更早,或“不可用”。

但是,如果某个date是另一个月份,那么这并不奏效(因为2012-2013年的数据量超过了500,000行)

如何从这个格式“mm / dd / yyyy hh:mm am / pm”中比较年/月/日 – 没有 – 从原始行中删除小时和分钟(创build没有小时/分钟的新行也不是一个选项)

谢谢!

使用Value2属性比较单元格的值。 Value2属性返回单元格的无格式值。 每个存储的date/时间值的整数表示一天,所以我用Int()方法截断存储的值,所以我们只是按date进行比较,而不是按分钟或秒进行比较。

 If Sheets("Data").Range("i" & i).Value <> "N/A" _ And Sheets("Data").Range("K" & i).Value <> "N/A" Then Select Case Int(Sheets("Data").Range("i" & i).Value2) Case Is = Int(Sheets("DATA").Range("K" & i).Value2) Sheets("Data").Range("S" & i).Value = "Equals" Case Is > Int(Sheets("DATA").Range("K" & i).Value2) Sheets("Data").Range("S" & i).Value = "Later" Case Else Sheets("Data").Range("S" & i).Value = "Earlier" End Select Else Sheets("Data").Range("S" & i).Value = "N/A" End If