我不知道任何内置的“标准”日期/时间格式都可以用这种方式很好地格式化,因此,您尝试使用自定义格式似乎是适当的。
但是,它对您不起作用的原因是,时间值没有像您假设的那样以秒表示-它们以十进制值存储,其中1是24小时。
因此,您必须使用等于所需断点的十进制值。不幸的是,似乎Excel将断点的数量限制为三个,因此我无法获得“ 1分钟”(单数)等其他断点。即使有更多断点,您也永远无法达到“ N小时”,因为您会需要无限的断点(没有条件可以检测到零分钟分量)。
因此,使用自定义格式可以获得的最接近的结果是:
[<0.000694]"0 minutes";[<0.041666][m] "minutes";h "hours", m "minutes"
给出以下内容:
00:00:00 0 minutes
00:01:00 1 minutes
00:02:00 2 minutes
00:03:00 3 minutes
01:00:00 1 hours, 0 minutes
01:01:00 1 hours, 1 minutes
02:00:00 2 hours, 0 minutes
02:01:00 2 hours, 1 minutes
01:03:00 1 hours, 3 minutes
23:59:59 23 hours, 59 minutes
我可能反而建议编写VBA函数并格式化公式中的字段。
而且,我建议您考虑是否首先将值设为时间。以特定单位存储经过的时间会更好(例如,分钟数)。您仍然无法拥有无限的断点,但是您可以避免上述明显的问题-它在23小时59分钟后翻转。
编辑:为了好玩,我做了一个公式,可以产生您想要的结果。它不是您的问题所要求的格式,但是因为它不能完全提供所需的结果,所以我认为这可能是一个不错的选择:
=if(hour(a1)=0,if(MINUTE(A1)=0,"0 minutes",if(minute(a1)=1,"1 minute",minute(a1) & " minutes")),if(hour(a1)=1,if(MINUTE(A1)=0,"1 hour",if(minute(a1)=1,"1 hour, 1 minute","1 hour, " & minute(a1) & " minutes")),if(MINUTE(A1)=0,hour(A1) & " hours",if(minute(a1)=1,hour(A1) & " hours, 1 minute",hour(A1) & " hours, " & minute(a1) & " minutes"))))
00:00:00 0 minutes
00:01:00 1 minute
00:02:00 2 minutes
00:03:00 3 minutes
01:00:00 1 hour
01:01:00 1 hour, 1 minute
02:00:00 2 hours
02:01:00 2 hours, 1 minute
01:03:00 1 hour, 3 minutes
23:59:59 23 hours, 59 minutes