Microsoft Excel:条件编号格式


1

有一列带有hh:mm:ss格式的时间段。秒不使用。时间为3小时2分钟03:02:00。如何有条件地格式化单元格以获得以下结果?

00:00:000 minutes

00:01:001 minute

00:02:002 minutes

01:00:001 hour

02:00:002 hours

03:01:003 hours, 1 minute

01:03:001 hour, 3 minutes

我尝试使用以下自定义格式字符串失败:

[<60]hh:mm:ss "minutes";[<120]hh:mm:ss "minute";[<3600]hh:mm:ss "minutes";hh "hour(s)," mm "minute(s)"


编辑标题,标题应为“格式化时间以小时和分钟显示”。
Rajesh S

1
不。我为什么要那么做?

因为它是单元格格式或格式日期和时间。条件格式不同。
Rajesh S

1
好吧,那只是命名。实际上,它是一个有条件的数字格式。

Answers:


1

我不知道任何内置的“标准”日期/时间格式都可以用这种方式很好地格式化,因此,您尝试使用自定义格式似乎是适当的。

但是,它对您不起作用的原因是,时间值没有像您假设的那样以秒表示-它们以十进制值存储,其中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

我不明白这行:11:59:59 23 hours, 59 minutes

1
@Ben-抱歉-这是一个错字。我最初将第一列格式化为AM / PM,然后将其删除,但手动更新了示例,但没有解决最后一个。
安德鲁(Andrew)

1
@Ben-我为答案添加了替代方法-使用公式。
安德鲁

1.啊,我明白了。2.非常感谢!我很感激。

1
是的,您将使用其他公式来计算总分钟数中的小时和分钟。询问其他问题是否要走这条路。
安德鲁

1

选择时间列,然后简单地应用此格式h" hours and "m" minutes"。您的日期列将如下所示。

在此处输入图片说明


1
这是一个很好的答案。但是自定义格式应该是h "hours, " m "minutes"接近Ben试图做的事情。正如安德鲁指出的那样,当数字为1时,可能无法使标签为单数
。– Bandersnatch

1

您可以尝试TEXT()在带有大量嵌套的公式中使用IF()。在您的情况下,这将变得非常麻烦,因为您有太多可能的格式。我计算了8种不同的可能性。

例如,此公式

=IF(HOUR(A1)=1,IF(MINUTE(A1)=1,TEXT(A1,"h"" hour, ""m ""minute"""),TEXT(A1,"h"" hour, ""m ""minutes""")),TEXT(A1,"h"" hours, ""m ""minutes"""))

进行所需的某些格式设置,如下表所示。

TEXT()函数内部的格式必须用单引号引起来,但是围绕小时和分钟标签的引号必须使用双引号“转义”。

在此处输入图片说明

另外,我无法仅正确显示分钟。此公式为A列中的每个值给出“ 1分钟”:

=TEXT(A1,"m"" minute""")

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.