0

我有格式为 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)+1,255)) 但结果错误 A1 显示为 403: 29:24 A2 显示为 104:45:00

我想要两个字符串的一个公式

4

3 回答 3

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

于 2012-07-27T22:22:32.753 回答
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").

于 2012-07-27T21:26:13.090 回答
0

@TimWilliams 一针见血。你有一个错字。更改16.21:38:2716:21:38:27,它将正常工作。您还可以包装公式以检查长度。如果超过 8 个字符,则表示添加了一个日期。看这个例子

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

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

快照

在此处输入图像描述

编辑

我刚刚注意到您255在公式中进行了硬编码。你不需要这样做。这也将起作用。

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

顺便说一句,为了万无一失,您还可以将TRIM函数添加到上述公式中......

于 2012-07-27T21:35:31.573 回答