Excel将文本转换为时间戳

我在单元格A1中具有以下文本时间戳。 22-OCT-13 03.40.00.000000000 AM 。 在B1中,我有以下公式: =TIME(HOUR(MID(A1,11,2)),MIN(MID(A1,14,2)),SECOND(MID(A1,17,2)))

它产生12:40 AM。 小时函数返回零,但分钟函数正常工作。 我无法弄清楚这是怎么回事。

MIN是“最小”公式,它从值列表中返回最小值,而不是MINUTE公式。

我认为你不熟悉TIME()HOUR()MINUTE()

TIME()取“正常”值并将其转换为时间值。 如果你有TIME(H, M, S)H是小时数(不是时间戳), M是分钟数(不是时间戳), S是秒数(再次,不是时间戳)。

HOUR()需要一个时间值并从中提取小时。

MINUTE()SECOND()类似于HOUR() 。 你可能想要的是:

 =TIME(MID(A1,11,2),MID(A1,14,2),MID(A1,17,2)) 

当你使用MID()你得到一个数字,而不是一个时间戳。 所以, HOUR取这个数字,将其解释为一个时间戳并返回小时。 在你的例子中,第一个MID返回03 。 在excel中,如果将其转换为时间戳,则会得到03/01/1900 00:00(以dd / mm / yyyy hh:mm格式),因此小时为0


编辑:

顺便说一句,如果你想保持date和时间,你可以使用这个公式(不要忘记最后的AM / PM:

 =SUBSTITUTE(SUBSTITUTE(A1,".",":"),":",".",3)*1 

原来的date/时间几乎可以被Excel所理解。 全部replace.:然后replace第三个(last) : by . 并乘以1告诉Excel将其转换为数字。 只要按照时间格式化结果,应该这样做。