在我正在研究的VBA项目中,我需要计算两个日期之间差异小于X小时的行数。
我的想法是遍历所有行并检查每一行,如下所示:
Dim count as Integer
if DateDiff("h", date1, date2) < 24 then
count = count + 1
End If
问题是我遇到了不兼容类型错误(执行错误13)。
是否可以在DateDiff函数上创建IF语句?或者是否可以使用DateDiff作为条件制作过滤器?
感谢您的帮助,抱歉我的英语不好,因为这不是我的主要语言!
答案 0 :(得分:0)
我已经像这样测试过没有任何错误。
Dim date1 As Date
Dim date2 As Date
date1 = "14/10/2015 19:00:00"
date2 = "14/10/2015 16:28:43"
If DateDiff("h", date1, date2) < 24 Then
count = count + 1
End If
答案 1 :(得分:0)
VBA转换功能CDate
可以应用您经常支付的一些开销来纠正日期。话虽如此,最好先纠正数据,而不是依赖于错误控制的转换函数。
Dim date1 As Date, date2 As Date, n As Long
date1 = CDate("14/10/2015 19:00:00")
date2 = CDate("14/10/2015 16:28:43")
Debug.Print date1 & " to " & date2
If IsDate(date1) And IsDate(date2) Then
If DateDiff("h", date1, date2) < 24 Then
n = n + 1
End If
'alternate
If date2 - date1 < 1 Then
n = n + 1
End If
End If
鉴于24小时是一天,一天 1 ,简单的减法应足以进行此基础比较。
您的DMY格式可能会导致日期转换中以EN-US为中心的VBA出现问题。如果找到含糊不清的日期字符串(例如&#34; 11/10/2015 16:28:43&#34;),您可能会发现您将其解释为MDY。