我的数据显示为此
WAIT
29:45:00
2:41:14
46:06:00 ' <---
0:25
19:23 ' <---
2:25:12
37:36:00
2:12:24
1:34:35
1:54:13
13:00:53
当我将公式= HOUR(F7)* 3600 + MINUTE(F7)* 60 + SECOND(F7)应用到46:06:00时,它会给出正确的答案,但是当相同的公式应用于19时:23,excel以HHMMSS格式识别19:23,但它是MMSS ... 我有一个庞大的数据库,我很难手动更改它.... 请帮忙......
答案 0 :(得分:1)
默认情况下,Excel将格式为xx:xx或x:xx的数字视为h:mm,而不是mm:ss。
我没有看到将值转换为有效hh:mm:ss的方法,因为Excel没有句柄来确定哪个数字缺少小时部分。
最佳选择是更改写入数据的例程,并将小时输入为00:mm:ss值之前。
答案 1 :(得分:1)
只要数据列格式化为文本,您就可以测试字符串中存在多少冒号并根据是否有1或2应用不同的计算。如果只有1个冒号,则使用Excel认为的内容是作为分钟的小时数,以及Excel认为的分钟数是秒。
=IF(LEN(F7)-LEN(SUBSTITUTE(F7,":",""))=2,HOUR(F7)*3600+MINUTE(F7)*60+SECOND(F7),HOUR(F7)*60+MINUTE(F7))
答案 2 :(得分:0)
很难判断您的数据是否为文本格式 - HOUR/MINUTE/SECOND
函数在文本格式化的时间和实时一样有效。你对这个公式有什么结果?
=ISNUMBER(F7)
如果这给你假,那么你的“时间”是文本格式,在这种情况下,这个公式将给你总秒数:
=LOOKUP(999,({"","0:"}&F7)+0)*86400
将结果单元格格式化为常规
根据需要将19:23
解释为19分23秒。对于46:06:00
,您将获得结果165960
,即46小时6分钟内的总秒数。如果pnuts指出,你的公式只给出了24小时的倍数后剩下的秒数。那是因为
=HOUR("46:06:00")
= <强> 22 强>
如果您希望结果为79560
,那么您可以添加MOD
这样的功能:
=MOD(LOOKUP(999,({"","0:"}&F7)+0),1)*86400
LOOKUP
函数在这里工作,因为它利用了将“0:”连接到19:23
的开头(然后进行类似+0的计算)的事实转换19:23
(19小时23分钟)到0:19:23
(零小时,19分钟,23秒)但是连接0:到46:06:00
然后加0会给你一个错误。
答案 3 :(得分:0)
Guyz,回答这个问题。 这是我试过的 -
首先我申请了 = TEXT(D2,“hh:mm:ss”)公式到单元格值然后使用= IFERROR(SUMPRODUCT((“00:”&amp; d2)+0),d2),所以19:23变为00 :19:23 ..
虽然我必须对数据进行一些手工操作...