在 Excel 中将时间格式化为天、小时、分钟和秒的更好方法?

Better Way to Format Time as Days, Hours, Minutes, and Seconds in Excel?

在 Excel 中,我通常通过将小时、分钟和秒放入单独的单元格来跟踪 所用时间。我发现 Excels 内置的日期和时间格式在加减时有很多怪癖,这就是我避免它的原因。

现在我有一个 Excel sheet 来记录这样一个重复任务的时间:

|  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中全部排在一行,我在这里格式化了以便于阅读。)

我的公式在我使用的任何时间都有效且准确,但它很长且难以遵循。有没有更好的方法来做到这一点?

(请记住,我正在处理格式化为数字的单元格。没有格式化为日期,也没有格式化为时间。)

正如您在下图中看到的,我无法使您提供的公式(在 E6 中)在任何程度上都有效,但我设计了一个公式,将一些工作表函数与自定义格式掩码结合起来,似乎效果很好。

E7中的公式是,

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

不能在同一格式字符串中同时使用 0 和 h,但可以删除 h、m 和 s 的日期部分和格式。格式掩码中的反斜杠是转义字符,不需要在带引号的字符串中加倍引号。 INT function resolved the integer portion and the MOD function 提供小数(又名时间)部分。

¹ 我更喜欢 INT function over the TRUNC function for removing the decimal portion of a number. This is strictly personal preference. In this case there is no difference. Even ROUND 可以使用。