更好地将时间格式化为Excel中的日,时,分,秒?

在Excel中,我通常通过将小时,分钟和秒放入单独的单元格来跟踪所花费的时间 。 我发现以date和时间格式构build的Excels在加减时有许多怪癖,这就是为什么我要避免它。

现在我有一个Excel工作表,保持重复任务这样的时间:

| H | I | | Min | Seconds | | 7 | 15 | | 7 | 51 | | 8 | 05 | 

在单元格E5 ,然后将任务的总时间以秒为单位并将其转换为几天

 =(SUM(H:H)*60+SUM(I:I))/60/60/24 

现在我希望E5的总数以小时分钟秒显示 。 我可以将E5格式化为d" days "h" hours "mm" min "s" s" ,但是如果总时间超过30天,则不起作用。

所以我现在在不同的细胞里有这个公式:

 =TRUNC(E5)&" days " &TRUNC((E5-TRUNC(E5))*24)&" hours " &TRUNC(((E5-TRUNC(E5))*24-TRUNC((E5-TRUNC(E5))*24))*60)& " min" &TRUNC(((((E5-TRUNC(K5))*24-TRUNC((E5-TRUNC(E5))*24))*60)- TRUNC((((E5-TRUNC(E5))*24-TRUNC((E5-TRUNC(E5))*24))*60)))*60)&" s" 

(注意:在Excel中,forumal全部在一行上,我在这里格式化,所以阅读起来更容易。)

公式我有工作,是准确的任何时间我使用,但它是漫长而难以遵循。 有没有更好的方法来做到这一点?

(请记住,我正在使用格式化为数字的单元格,没有格式化为date,也没有格式化为时间。

正如你可以在下面的图片看到的,我不能让你提供的公式工作(在E6中)的任何程度的确定性,但我devise了一个公式耦合一些工作表函数与自定义格式化面具,似乎运作良好。

从日期时间的TRUNC天

E7中的公式是,

  =INT(E5)&TEXT(MOD(E5, 1), " \d\a\y\sh \h\r\sm \mi\n\ss \s\ec\s") 

您不能同时使用格式string中的0和h,但可以删除h,m和s的date部分和格式。 格式掩码中的反斜杠是转义字符,并且无需在引用的string中加倍引号。 INT函数parsing整数部分, MOD函数提供小数(又名时间)部分。

¹ 我更喜欢使用TRUNC函数的INT函数去除数字的小数部分。 这完全是个人喜好。 在这种情况下,没有区别。 甚至可以使用ROUND 。