控制Excel时间格式input/输出

背景:我一直在主持我们当地的慢跑事件大约十年。 我负责处理参加者(姓名,体育俱乐部,围脖号码)的数据分类(年龄段+性别,距离)。 主要任务是收集他们的时间,并处理这些数据(在他们的类别内sorting跑步者等)。 我可以用Excel处理大部分的罚款。

问题:进入参赛者比赛时间的理想时间格式是什么? 时间格式为mm:ss或(对于较慢的跑步者和/或较长的距离) h:mm:ss 。 Excel似乎没有内置格式的小时字段是可选的。 为了优化我的工作stream程理想情况下,我想有一个单元格格式,使得input47:12被解释为47分12秒,input1:09:38被解释为1小时9分38秒。 然而,我发现最适合的单元格格式的Excel将坚持47:12的input意味着47小时12分钟。 对于超过1小时的时间,我会input1:03:00如果我的意思是秒字段将保留为零值。

如何让Excel意识到,当格式最多可以处理三个数字作为input时,只有两个数字时才会将它们移动到最后

思考:我“可以”在47分钟和12秒内按0:47:12键。 但是因为大部分时间都在1小时以内,所以一部分是浪费精力。 而且,使用这种格式,数据与多余的0:一起显示在屏幕上。 更糟糕的是(IIRC)那些领先的零也出现在印刷版本中,对于初级参与者来说这在短距离内是奇怪的(甚至是侮辱)。

我的黑客:我input时间作为一般数字的mm,ss格式(在这些部分逗号作为小数点分隔符)。 Excel可以将它们sorting为数字。 然后,我将那个sorting的列的数据复制到另一个“可打印”版本(格式化为文本),其中数据刚刚被复制,但是我手动纠正超过60分钟的时间。 只要我不急(我们的活动并不完全是波士顿马拉松,比方说不到200人),这样做还行,记得要隐藏不应该打印的栏目。 这很烂,当其他官员冲我去拿印刷的结果时,发生了意外。

在你身上 对不起,如果我标记不到最佳(或张贴在错误的网站)。 在SO的第一次海报(虽然在Math.SE老兵)。 我发现的一些相关问题接近,但没有雪茄。

我设法创build了一个小时字段可选的格式。 它使用条件格式。 首先,将单元格格式化为标准格式,以逗号分隔时间。 之后,为这些单元格创build一个条件格式,它有两个规则:

  1. 如果单元格> 0.04166667格式hh:mm:ss
  2. 如果cellvalue <0.04166666格式mm:ss

结果:
47:12
01:09:38
01:00:00

所以你得到你真正想要的,你可以使用原始值进行sorting等等。

编辑:

对于input你需要四个额外的列。 你可以随心所欲地input时间,例如47:12和1:09:38。 在接下来的三列中,您可以以小时,分钟和秒分割这些值,因此解释限制为3小时(03:00),即0.125。

所以,这些是拆分列的公式(您的input在B1中):

小时数=IF(B1>0.125,0,HOUR(B1))
分钟=IF(B1>0.125,INT(B1)*24+HOUR(B1),MINUTE(B1))
秒: =IF(B1>0.125,MINUTE(B1),SECOND(B1))

最后,你把所有的价值都放在第四栏:

=TIME(C1,D1,E1)

并使用上面的条件格式。

如果您将input您的数据为

 `mmm,ss` 

其中逗号是小数点,那么你可以用简单的公式把它转换成“Excel Time”

 =DOLLARDE(A1,60)/1440 

根据需要设置结果的格式。

如果您希望显示的所有内容都是h:mm:ss则将其用作自定义格式(格式>单元格>数字>自定义types:…)

如果您希望只显示60分钟或更长时间的值,请使用

 [<0.0416666666666667]mm:ss;h:mm:ss 

为您的单元格的自定义格式。

请注意,秒数必须始终以两位数字input。 换一种说法

 6,2 will translate to 6 min 20 sec. 6,02 will translate to 6 min 2 sec 

我真的很喜欢上面的IQV的答案,但正如评论部分所指出的那样,数据input端需要前导零。 如果出于某种原因,这是不可接受的,你可以使用下面的丑陋的公式将你用mm,ssinput的时间转换为hh:mm:ss,hh:按要求显示。 不幸的是,它将整个事物转换为文本,这意味着您不能再对其进行math运算。

 =IF(FIND(".",MOD(D2,60)&".")=2,"0","")&MOD(D2,60) 

因为你使用,作为你的小数分隔符公式将成为:

 IF(FIND(",",MOD(D2,60)&",")=2,"0","")&MOD(D2,60) 

如果你使用; 作为你的清单分隔符,然后你的公式就成

 IF(FIND(",";MOD(D2;60)&",")=2;"0";"")&MOD(D2;60) 

有可能有一些更清洁的公式,但这会让你开始。 只需将D2replace为存储时间的位置即可。

在这里输入图像说明

再次,我仍然喜欢IQV的答案,因为你可以做更多的时间信息,当它被存储为一个数字而不是文本。

选项2

可以说你把你的数据存储方法改为hhmm,ss在单元格D6中。 你可以拆开这些信息,然后按照下面的方式重新组合。

 =IF(FIND(".",D6)<=3,LEFT(D6,2)&":"&RIGHT(D6,LEN(D6)-FIND(".",D6)),LEFT(D6,FIND(".",D6)-3)&":"&MID(D6,FIND(".",D6)-2,2)&":"&RIGHT(D6,LEN(D6)-FIND(".",D6))) 

您将需要replace您的列表分隔符,然后将小数点replace为昏迷。

POC2