如何用Excel公式从数字中提取毫秒,秒和分钟?

如何计算Excel序列date/时间中的秒数,在下面的示例中,不使用SECOND()函数(我相信)循环或单元格格式? 我怎样才能把这个延长几分钟?

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

  Right: 41165.4444365394 Left: 41165.4444321412 

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

对我来说, 第二个函数看不到10:39:5810:39:59之间的区别,因此与“Display only seconds”分辨率不匹配,并且正在执行“Display milliseconds resolution”(显示毫秒分辨率)我对毫秒的计算工作正常。

  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) 

我是怎样将序列号乘以提供未被占用的秒和分钟(单独)?

你几乎在那里,试试这个:

 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 

编辑: 只使用math

我对此并不十分确定,但对于毫秒来说,它并不像时间价值那样直截了当,这就是为什么:

excel将1.00001解释为1900年1月1日00:00:01。

之前的部分. 是date,是时间之后的部分。

不幸的是时间运行在0.00000到.99999之间,但是你的平均日只有86400秒 – 所以0.0000115740740740741是他们之间的因素。

用这个因子除以0.00038或乘以86400,就得到了32.832,这个数字为33秒,就像excel所做的那样。 您可以使用此来获取给定时间内的秒数。

编辑:

这里是我现在的最终解决scheme

 =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

编辑感谢巴里霍迪尼,我会添加一些额外的信息:

 =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 

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

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

这也将区分时间,例如,秒是相同的,但分钟是不同的。

编辑:这将做同样的事情

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