首页 > 解决方案 > Excel问题中将文本转换为日期

问题描述

所以我打开 excel,在 G2 中输入:Feb/12/2016 01:09:28 PM UTC

然后在任何其他单元格中尝试以下公式:

=IFERROR(DATEVALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LEFT(G2,11),"Dec",12),"Nov",11),"Oct",10),"Sep",9),"Aug",8),"Jul",7),"Jun",6),"May",5),"Apr",4),"Mar",3),"Feb",2),"Jan",1))+TIMEVALUE(MID(G2,13,11)),"Error")

我试图让它显示为 2/12/2016 13:09

但它给了我我的错误。我什么都试过了,就是不行??

非常感谢各位

标签: excelexcel-2010

解决方案


简短的回答:

使用以下公式:

=DATE(MID(A1,8,4),MONTH(1&LEFT(A1,3)),MID(A1,5,2)) + IF(MID(A1, 22,2) = "PM", TIME(MID(A1, 13, 2), MID(A1, 16, 2), MID(A1, 19, 2)) + TIME(12, 0, 0), TIME(MID(A1, 13, 2), MID(A1, 16, 2), MID(A1, 19, 2)))


长答案:

虽然没有必要,但最好将时间和日期分开以进行数据操作。

我建议使用隐藏列,这样可以使您的日期很好并且整齐地分开,而且还可以帮助我解释答案,而不仅仅是粘贴一个巨大的公式:

假设您的文本信息始终具有相同的格式 "Mon"/dd/yyyy hh:mm:ss AM/PM UTC

在单元格 B1 中,我们将粘贴我们的日期

=DATE(MID(A1,8,4),MONTH(1&LEFT(A1,3)),MID(A1,5,2))

非常不言自明,我们将提取日期格式的各个部分并将其应用于它们。唯一的技巧部分是使用该MONTH()函数将月份字符串转换为实际的月份格式。


现在到时候,有点棘手

让我们尝试在 C1 中解析它:

首先,我们需要实现一个IF函数,它将 AM/PM 格式转换为 24h 格式,然后我们将使用字符串函数,类似于上面的 date 将数据提取到我们的函数中TIME()

=IF(MID(A1, 22,2) = "PM",  TIME(MID(A1, 13, 2), MID(A1, 16, 2), MID(A1, 19, 2)) + TIME(12, 0, 0), TIME(MID(A1, 13, 2), MID(A1, 16, 2), MID(A1, 19, 2)))

最后但并非最不重要的一点是,在 D 列中,我们将粘贴我们的结果。首先确保您的格式正确设置为您的预期输出:

在此处输入图像描述

然后我们将简单地将两个数据字段添加在一起:

=B1 + C1

产生预期的结果:

在此处输入图像描述


推荐阅读