在 Excel 中将时间格式化为天、小时、分钟和秒的更好方法?
Posted
技术标签:
【中文标题】在 Excel 中将时间格式化为天、小时、分钟和秒的更好方法?【英文标题】:Better Way to Format Time as Days, Hours, Minutes, and Seconds in Excel? 【发布时间】:2015-08-02 21:24:04 【问题描述】:在 Excel 中,我通常通过将小时、分钟和秒放入单独的单元格来跟踪花费的时间。我发现内置日期和时间格式的 Excel 在加减运算方面有很多怪癖,这就是我避免使用它的原因。
现在我有一个 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 中都在一行中,我在这里对其进行了格式化,以便于阅读。)
我的公式在我使用的任何时间都有效且准确,但它很长且难以遵循。有没有更好的方法来做到这一点?
(请记住,我正在使用格式化为数字的单元格。没有格式化为日期,也没有格式化为时间。)
【问题讨论】:
【参考方案1】:如下图所示,我无法确定您提供的公式(在 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 解析整数部分,MOD function 提供小数(又名时间)部分。
¹ 我更喜欢 INT function 而不是 TRUNC function 来删除数字的小数部分。这完全是个人喜好。在这种情况下没有区别。甚至可以使用ROUND。
【讨论】:
这很好用,而且代码更容易理解。我注意到的一件事是存储的天数似乎是有限制的。限制是 134,217,727,我猜这是 Excel 中“INT”变量的限制?但是,这可能比我需要的天数要多得多。以上是关于在 Excel 中将时间格式化为天、小时、分钟和秒的更好方法?的主要内容,如果未能解决你的问题,请参考以下文章
在 ZonedDateTime 或 Instant 中将小时分钟和秒设置为 00