Excel和Microsoft日期代码转换

时间:2014-08-18 19:49:44

标签: excel

如何将此(69.36)转换为多少个月,几天,几小时,分钟和一个月的表示形式。秒?

1 个答案:

答案 0 :(得分:1)

更新2: 抱歉,还有一些更新1中的代码不匹配的情况。我有两个建议,一个很容易但只有几天,几小时,几分钟和几秒:

=FLOOR(B4-A4,1)&":"&TEXT((B4-A4)-FLOOR(B4-A4,1),"hh:mm:ss")

但是上面的请求需要几个月,这对于内置日期功能来说非常棘手,因为几个月的天数不一样。和以前一样,我有一个两个单元的解决方案,这个解决方案既丑陋又长,但在更多情况下似乎有效:

存储:在c1

=12*(YEAR(B1)-YEAR(A1))+(MONTH(B1)-MONTH(A1))+IF(DAY(B1)-DAY(A1)+IF(FLOOR(B1,1)<FLOOR(A1,1),-1,0)<0,-1,0)

最终解决方案公式

=FLOOR(C1/12,1)&":"&MOD(C1,12)&":"&FLOOR(B1-DATE(YEAR(A1),MONTH(A1)+C1,DAY(A1)),1)&":"&TEXT((B1-A1)-FLOOR(B1-A1,1),"hh:mm:sss")

结果:

A               B               C           Result      Simple Days + Time Formula
5/1/2006 0:00   5/2/2007 0:00   12  1:0:1:00:00:00      366:00:00:00
5/1/2006 10:35  5/2/2007 15:30  12  1:0:1:04:55:00      366:04:55:00
5/1/2007 10:35  5/2/2007 15:30  0   0:0:1:04:55:00      1:04:55:00
5/2/2007 10:35  5/2/2007 15:30  0   0:0:0:04:55:00      0:04:55:00
5/2/2006 10:35  5/2/2007 15:30  12  1:0:0:04:55:00      365:04:55:00
5/2/2005 10:35  5/2/2007 15:30  24  2:0:0:04:55:00      730:04:55:00
5/1/2006 18:30  5/2/2007 15:30  12  1:0:1:21:00:00      365:21:00:00
5/1/2006 17:35  5/2/2007 15:30  12  1:0:1:21:55:00      365:21:55:00
4/25/2007 17:35 5/2/2007 15:30  0   0:0:7:21:55:00      6:21:55:00
5/7/2006 18:30  5/2/2007 15:30  11  0:11:25:21:00:00    359:21:00:00

最后两行未能在上次更新的公式中提供正确的结果。

更新1: 我给出的旧配方在不同月份处理日期的方式存在问题。计算几个月时出现奇怪的事情。不知道为什么。在A1(1/1/2006 10:35:00 AM)和B1(5/2/2007 3:30:00 PM)中再次考虑两次。然后在c1中,您希望以下公式计算一个日期,其中月份和年份与b1在同一时间和日期为a1:

=DATE(YEAR(B1),MONTH(B1),DAY(A1))+TIME(HOUR(A1),MINUTE(A1),SECOND(A1))

然后解决问题的(更加丑陋的)公式是:

=IF(C1-A1>0,TEXT(C1-A1,"yy:mm")&":"&TEXT(B1-C1,"dd:hh:mm:ss"),"00:00:"&TEXT(B1-A1,"dd:hh:mm:ss"))

我没有详尽地测试它,但我测试了一些案例,似乎有效。

A               B               C           Result
5/1/2006 0:00   5/2/2007 0:00   5/1/2007    00:12:01:00:00:00
5/1/2006 10:35  5/2/2007 15:30  5/1/2007    00:12:01:04:55:00
5/1/2007 10:35  5/2/2007 15:30  5/1/2007    00:00:01:04:55:00
5/2/2007 10:35  5/2/2007 15:30  5/2/2007    00:00:00:04:55:00
5/2/2006 10:35  5/2/2007 15:30  5/2/2007    00:12:00:04:55:00
5/2/2005 10:35  5/2/2007 15:30  5/2/2007    01:12:00:04:55:00

注意:如果B中的日期大于A,则不进行错误检查,在这种情况下给出“#VALUE!”错误。


旧版本 假设A1包含日期1 5/9/2007 10:35而B1包含日期2 6/9/2007 15:30 那就是时间的差异:

=TEXT(B1-A1,"m:d:h:mm:ss")

这给出了期望的结果

1:31:4:55:00