首页 > 解决方案 > 想要将一秒格式化为 dd:hh:mm:ss 以在 Excel 2016 中删除零值以提高可读性

问题描述

我有将秒转换为正确值 xx 天 yy 小时 zz 分钟 aa 秒的解决方案,如果值为 00,我想知道一种让输出删除值和标签的方法。

一直在浏览多个站点,并找到了操纵秒数以更改格式的所有好方法,但我怀疑我需要一个函数来获得所需的输出。

这是我将秒数转换为正确格式的代码:

=TEXT(G2/(24*60*60),"dd \D\a\y\s hh \H\o\u\r\s mm \M\i\n\u\t\e\s ss \S\e\c\o\n\d\s")

60(作为我的源秒数)在输出中出现为 00 Days 00 Hours 01 Minutes 00 Seconds。我希望它说 01 Minutes 并删除其他值。12600(作为我的源秒数)在输出中出现为 00 Days 03 Hours 30 Minutes 00 Seconds。我希望它说 03 Hours 30 Minutes 并删除其他值。

标签: excel-2016

解决方案


您必须使用 =Concatenate(If(......)) 来实现这一点。只是为了演示,我又添加了 4 列,分别代表日、时、分和秒,然后将它们连接成一列。我的数据位于单元格 C2。公式如下:

Cell H2 : =TEXT(C$2/(24*60*60),"dd")
Cell I2 : =TEXT(C$2/(24*60*60),"hh")
Cell J2 : =TEXT(C$2/(24*60*60),"mm")
Cell K2 : =TEXT(C$2/(24*60*60),"ss")

以上四个将只提取实际的天/小时/分钟/秒数。并且下面的四个会根据值是零还是非零为其添加后缀。

Cell L2 : =CONCATENATE(IF(H2<>"00",CONCATENATE(H2," days"),""))
Cell M2 : =CONCATENATE(IF(I2<>"00",CONCATENATE(I2," hours"),""))
...
...

最后,只需通过 O2 连接 L2 即可获得所需的结果。

=CONCATENATE(L2," ", M2," ",N2," ",O2)

您可能想从这里下载演示实现。


推荐阅读