1

SECOND()在不使用(我相信)舍入或单元格格式的函数的情况下,如何计算 Excel 序列日期/时间中的秒数,如下例中的链接?我怎样才能将它延长几分钟?

下面底部示例的序列值(图像中的最后一行)是:

     Right: 41165.4444365394
     Left: 41165.4444321412

上面的示例使用以下两个公式进行条件格式化(如果打开true,则停止,并显示优先顺序)。

在我看来,第二个函数看不到 和 之间的区别10:39:58,因此与“仅显示秒”分辨率10:39:59不匹配,并且鉴于我对毫秒的计算工作正常,正在继续“显示毫秒分辨率” 。

    To see if the seconds are different, first: =SECOND($B2)<>SECOND($C2)
    To see if only milliseconds have passed between the two times:
    =ROUND(($B2*86400-INT($B2*86400))*1000,0)<>ROUND(($C2*86400-INT($C2*86400))*1000,0)

我应该将序列号与什么相乘以提供未舍入的秒数和分钟数(分别)?

4

2 回答 2

1

尝试使用 FLOOR 函数来区分,即

=FLOOR($B2,"0:00:01")<>FLOOR($C2,"0:00:01")

这也将区分秒数相同但分钟数不同的时间。

编辑:这将做同样的事情

=INT($B2*86400)<>INT($C2*86400)

于 2012-09-20T16:30:10.543 回答
0

你快到了,试试这个:

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
于 2012-09-20T14:19:43.860 回答