VBA:如何在DateDiff函数

时间:2016-01-15 15:33:34

标签: excel vba excel-vba datediff

在我正在研究的VBA项目中,我需要计算两个日期之间差异小于X小时的行数。

我的想法是遍历所有行并检查每一行,如下所示:

Dim count as Integer
if DateDiff("h", date1, date2) < 24 then
    count = count + 1
End If

问题是我遇到了不兼容类型错误(执行错误13)。

是否可以在DateDiff函数上创建IF语句?或者是否可以使用DateDiff作为条件制作过滤器?

感谢您的帮助,抱歉我的英语不好,因为这不是我的主要语言!

2 个答案:

答案 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。