如何将文本字符串转换为小时

时间:2012-07-27 20:57:45

标签: string excel text

我的数据格式为d.hh.mm.ss和hh.mm.ss,我需要将两者转换为时间值HH.MM.SS

在A1中,文本字符串是16.21:38:27 在A2中,文本字符串是04:08:45

我得到的细胞应显示B1 405:38:27                               B2 04:08:45

我尝试过使用= LEFT(A1,SEARCH(":",A1)-1)+ TIMEVALUE(MID(A1,SEARCH(":",A1) 1255)) 但结果是错误的 A1显示为403:29:24 A2显示为104:45:00

我想要两个字符串的公式

3 个答案:

答案 0 :(得分:1)

由于4:08:45是有效的时间格式,16.21:38:27不是这个公式在这两种情况下都适用于你:

=IF(ISNUMBER(A1+0),A1+0,RIGHT(A1,8)+LEFT(A1,FIND(".",A1)-1))

将结果单元格格式化为[h]:mm:ss

答案 1 :(得分:0)

这是:

= IF(ISERROR(FIND(".",A1)),
    TIMEVALUE(A1), 
    VALUE(LEFT(A1,FIND(".",A1)-1)) + TIMEVALUE(MID(A1, FIND(".", A1)+1, 8)))

如果是“。”在字符串中不存在,它只是使用TIMEVALUE()来解析时间。否则,它会解析“。”之前和之后的部分。分别。天数形成结果的整数部分,时间计算为小数日。然后使用标准格式对话框将其格式化为[h]:mm:ss格式。

如果您希望B1存储转换后的小时/分钟/秒的字符串而不是格式化的数字,请将上述全部内容包装在TEXT(formula above, "[h]:mm:ss")中。

答案 2 :(得分:0)

@TimWilliams击中了头部。你有一个错字。将16.21:38:27更改为16:21:38:27,它会正常运行。您可以另外包装您的公式以检查长度。如果它超过8个字符,则表示添加了日期。见这个例子

试试这个(你可以同时使用它)

=IF(LEN(A1)>8,LEFT(A1,SEARCH(":",A1)-1)+TIMEVALUE(MID(A1,SEARCH(":",A1)+1,255)),TIMEVALUE(A1))

<强>快照

enter image description here

修改

我刚注意到你的公式中有255硬编码。你不需要这样做。这也可以。

=IF(LEN(A1)>8,LEFT(A1,SEARCH(":",A1)-1)+TIMEVALUE(MID(A1,SEARCH(":",A1)+1,LEN(A1)-SEARCH(":",A1)+1)),TIMEVALUE(A1))

顺便说一句,为了让你万无一失,你也可以将TRIM函数添加到上面的公式中......