背景:我现在主持当地的慢跑活动已有十年了。我负责处理参与者的数据(姓名,体育俱乐部,号码布)分为他们的类别(年龄段+性别,距离)。主要任务是收集他们的时间,处理数据(在他们的类别中对跑步者进行排序等)。我可以用Excel来处理这个问题。
问题:参加比赛时间的理想时间格式是什么?时间格式为mm:ss
或(对于较慢的跑步者和/或较长的距离)h:mm:ss
。 Excel似乎没有内置格式,其中hours字段是可选的。为了理想地优化我的工作流程,我希望有一个单元格格式,以便输入
47:12
将被解释为47分12秒,输入1:09:38
将被解释为1小时9分38秒。但是,Excel,我找到的最合适的单元格格式,将坚持输入47:12
表示47小时12分钟。超过1小时的时间我会输入1:03:00
,如果我的意思是秒字段的值为零。
如何让Excel意识到当格式最多可以处理三个数字作为输入时,如果只给出两个数字,它会将它们移向结束?
思考:我“可以”在47分12秒内按键0:47:12
正确。但由于大多数时间都不到1小时,这部分是浪费精力。此外,使用这种格式,数据与多余的0:
一起显示在屏幕上。更糟糕的是(IIRC)那些领先的零
也出现在印刷版本中,对于初级参与者而言,它们在较短的距离内是奇怪的(甚至是侮辱性的)。
我的黑客:我以mm,ss
格式输入时间作为一般数字(在这些部分中,逗号用作小数分隔符)。 Excel可以将这些数字排序就好了。然后我将该排序列的数据复制到另一个“可打印”版本(格式化为文本),其中数据被复制,但我手动更正超过60分钟的时间。只要我不赶时间(我们的活动不完全是波士顿马拉松,比如说不到200名参与者),这种方法就可以正常工作,并且记得要隐藏不应该打印的列。这是愚蠢的,当其他官员一直在催促我打印结果时发生了意外事故。
答案 0 :(得分:2)
我设法创建了一个格式,其中小时字段 是可选的。它适用于条件格式。首先,您将单元格格式化为标准,因此您将时间作为逗号值。之后,为这些单元格创建条件格式,它有两个规则:
结果:
47:12
01:09:38
01:00:00
所以你得到了你真正想要的东西,你可以使用原始值进行排序等等。
修改强>
对于输入,您需要另外四列。您可以根据需要输入时间,例如47:12和1:09:38在接下来的三列中,您将以小时,分钟和秒分割这些值,其中解释限制为3小时(03:00),即0.125。
因此,这些是拆分列的公式(您的输入在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)
并使用上面的条件格式。
答案 1 :(得分:2)
如果您要输入数据
`mmm,ss`
其中逗号是小数点,然后您可以使用简单的公式将其转换为“Excel时间”:
=DOLLARDE(A1,60)/1440
根据需要格式化结果。
如果您希望所有内容都显示为h:mm:ss
,请将其用作自定义格式(格式>单元格>数字>自定义类型:...)
如果您希望{40}或更高的值只显示h
,请使用
[<0.0416666666666667]mm:ss;h:mm:ss
用于您手机的自定义格式。
请注意,必须始终以两位数输入秒数。换句话说
6,2 will translate to 6 min 20 sec.
6,02 will translate to 6 min 2 sec
答案 2 :(得分:1)
我非常喜欢上面的IQV答案,但正如评论部分所指出的那样,数据输入端需要前导零。如果由于某种原因这是不可接受的,您可以使用以下丑陋的公式将您输入的时间转换为通常的mm,ss到hh:mm:ss,其中hh:按要求显示。不幸的是,它将整个事物转换为文本,这意味着您无法再对其执行数学运算。
=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)
可能有一些更清洁的公式,但这会让你开始。只需将D2替换为存储时间的位置即可。
我仍然更喜欢IQV的答案,因为当它存储为数字而不是文本时,您可以使用时间信息做更多的事情。
假设您将数据存储方法更改为单元格D6中的hhmm,ss。您可以拆分信息并按照以下显示友好版本重新组装。
=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)))
你需要用你的列表分隔符代替,然后用昏迷代替小数。