1

我正在使用一个工作簿,该工作簿的日期和时间包含在 2 个工作表中。当变量设置为工作表 A 中的日期时,它将在工作表 B 中查找它并使用第二个变量检索行号。

我遇到的问题是,当变量 1 和 2 匹配时(即日期存在于工作表 B 中),它不会将它们识别为相等。我逐步完成了这个过程,看看我是否能找出它们不匹配的原因,结果证明这是因为序列日期略有不同。变量 1 和 2 分别为 44027.3333333325 和 44027.3333333333。

最后 2 个数字代表什么,我该如何解决?

我已经确认单元格具有相同的自定义格式,并且我将它们“变暗”为相同类型(尝试使用双精度和日期)。我需要保留小数的时间。

谢谢

4

2 回答 2

3

正如 Scott Craner 在评论中指出的那样,小数点代表的时间只有几分之一秒。要在忽略精确时间的情况下比较日期,请使用该DateValue函数;这样就无需对您的数据应用四舍五入。

Sub CompareTwoDates()

    Dim Date_1 As Date, Date_2 As Date

    Date_1 = 44027.3333333325
    Date_2 = 44027.3333333333
    
    If DateValue(Date_1) = DateValue(Date_2) Then
        MsgBox "The dates are identical.", vbInformation + vbOKOnly, "Date Comparison"
    End If

End Sub

更多关于DateValue函数的信息:DateValue 函数

于 2020-07-10T20:18:14.780 回答
3

Excel 日期时间值的小数部分表示时间。两个值之间的 0.0000000008 差异表示大约 10 微秒,这比 Excel 能够以标准日期/时间格式显示的精度更高。如果您只对第二级精度感兴趣,您可以安全地将值四舍五入到小数点后六位,这仍然会给您一个精度优于 1 秒的时间。

于 2020-07-10T20:18:57.340 回答