你快到了,试试这个:
B2 = 41165.4444365394
C2 = 41165.4444321412
=(VALUE(TEXT(B2,"ss.000"))-ROUND(MOD(B2*86400,INT(B2*86400)),3))<>(VALUE(TEXT(C2,"ss.000"))-ROUND(MOD(C2*86400,INT(C2*86400)),3)
VALUE(TEXT(B2,"ss.000")) -> gives you 59,317
VALUE(TEXT(C2,"ss.000")) -> gives you 58,937
MOD(B2*86400,INT(B2*86400))
-> is more appropriate here than substracting, but basically the same thing
编辑: 仅使用数学
我对此不是 100% 确定的,但时间值不像毫秒那样直接,这就是为什么:
excel 将像 1.00001 这样的值解释为一月 1. 1900 00:00:01。
之前的部分.
是日期,之后的部分是时间。
不幸的是,时间介于 0.00000 和 0.99999 之间,但您的平均一天只有 86400 秒 - 所以 0.0000115740740740741 是它们之间的因素。
通过将 0.00038 除以该因子或将其与 86400 相乘,您得到 32.832 - 与 excel 一样,四舍五入为 33 秒。您可以使用它来获取给定时间内的秒数。
编辑:
这是我现在的最终解决方案
=INT(MOD(B2,INT(B2))/0.0000115740740740741))
这会将您的任何时间转换为几秒钟,以便您可以在没有文本格式的情况下通过它们进行比较 - 如下所示:
=INT(MOD(B2,INT(B2))/0.0000115740740740741))<>INT(MOD(C2,INT(C2))/0,0000115740740740741))
你不必担心 ms,他们会被INT
.
哦,这是我的消息来源,它给了我正确的线索:
http://support.microsoft.com/kb/214094/EN-US
编辑感谢 barry houdini,我将添加一些附加信息:
=INT(MOD(B2,INT(B2))/0.0000115740740740741)
=INT(MOD(B2,INT(B2))*86400)
=INT(MOD(B2,1)*86400)
-> 38399 seconds of the day, without ms
-> shows only time differences regardless of date
=MOD(B2,1)*86400
-> 38399.317 seconds of the day, with ms
=INT(B2*86400)
-> 3556697399 seconds since 1.1.1900
-> shows time & date differences
=INT(MOD(B2*24*60*60,60)) (=INT(MOD(B2*86400,60)))
-> 59 seconds, regardless of time & date, only the current seconds part
=INT(MOD(B2*24*60,60))
-> 39 minutes
=INT(MOD(B2*24,60))
-> 10 hours