我试图仅比较以下时间间隔的一天:
表格(&#34; DATA&#34;)。范围(&#34; H:H&#34;)。NumberFormat =&#34; mm / dd / yyyy hh:mm am / pm&#34; < / p>
我发现自己是这个IF函数的解决方案,包含在许多其他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
这似乎可以解决问题 - 仅比较所有日期间隔的日期,并在S列中写入是同一天,更晚或更早,或者&#34;不可用&#34;。
但是,如果一个或另一个日期在另一个月内(因为2012 - 2013年的数据量超过50万行),这并不起作用。
如何比较此格式的年/月/日期&#34; mm / dd / yyyy hh:mm am / pm&#34;没有 - 从原始行删除小时和分钟(创建没有小时/分钟的新行也不是一个选项)
谢谢!
答案 0 :(得分:3)
使用Value2
属性比较单元格的值。 Value2
属性返回单元格的未格式化值。存储的日期/时间值的每个整数代表一天,因此我使用Int()
方法截断存储的值,因此我们只按日期进行比较,而不是按分钟或秒进行比较。
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