将文本日期/时间转换为Excel中的真实的日期时间

qkf9rpyu  于 2023-04-22  发布在  其他
关注(0)|答案(4)|浏览(176)

我的数据是从应用程序中提取的,它有一个看起来像Excel中的日期/时间的文本。如何将“3/24/2016 11:22:07 PM”(文本)转换为真实的的日期/时间转换?我已经尝试格式化单元格,但它不起作用。

mcdcgff0

mcdcgff01#

对于日期转换:

=DATEVALUE(TEXT(A1,"MM/DD/YYYY"))

对于时间转换:

=TIMEVALUE(TEXT(A1,"HH:MM:SS"))

对于日期时间转换:

=DATEVALUE(TEXT(A1,"MM/DD/YYYY"))+TIMEVALUE(TEXT(A1,"HH:MM:SS"))

其中A1包含您要转换的数据。
顺便说一下,你可能希望将单元格格式化为日期/时间或其他内容。
希望能帮上忙。

igetnqfo

igetnqfo2#

1)尝试使用DATEVALUE函数,看看是否适合您。
2)一个更可靠的方法,因为日期值并不总是有效的是手动剥离文本并将其插入到Excel日期值中。您将需要使用以下函数的组合:

  • 日期
  • 时间
  • 如果
  • 发现
  • MID
  • 左侧
  • LEN

现在在我看来,最简单的方法是使用多个helper列来构建所有步骤。每个步骤一个列。当你得到最终答案时,你可以替换或复制粘贴你的公式从助手列到最终的公式,直到你留下一个变量。我这样说的原因是,最终的公式只引用1个变量变得相当冗长/如果你犯了一个错字,忘记了一个括号或出了什么问题,这很难看,很难解决。当我这样做的时候,我总共使用了14列(包括最终公式)。当我把它全部打包成一个公式时,结果是这样的:

DATE(RIGHT(LEFT(A3,FIND(" ",A3)-1),4),LEFT(LEFT(A3,FIND(" ",A3)-1),FIND("/",LEFT(A3,FIND(" ",A3)-1))-1),MID(LEFT(A3,FIND(" ",A3)-1),FIND("/",LEFT(A3,FIND(" ",A3)-1))+1,FIND("/",LEFT(A3,FIND(" ",A3)-1),FIND("/",LEFT(A3,FIND(" ",A3)-1))+1)-FIND("/",LEFT(A3,FIND(" ",A3)-1))-1))+TIME(LEFT(RIGHT(A3,LEN(A3)-FIND(" ",A3)),FIND(":",RIGHT(A3,LEN(A3)-FIND(" ",A3)))-1)+IF(AND(LEFT(RIGHT(A3,LEN(A3)-FIND(" ",A3)),FIND(":",RIGHT(A3,LEN(A3)-FIND(" ",A3)))-1)<12,RIGHT(RIGHT(A3,LEN(A3)-FIND(" ",A3)),2)="AM"),0,12),MID(RIGHT(A3,LEN(A3)-FIND(" ",A3)),FIND(":",RIGHT(A3,LEN(A3)-FIND(" ",A3)))+1,FIND(":",RIGHT(A3,LEN(A3)-FIND(" ",A3)),FIND(":",RIGHT(A3,LEN(A3)-FIND(" ",A3)))+1)-FIND(":",RIGHT(A3,LEN(A3)-FIND(" ",A3)))-1),MID(RIGHT(A3,LEN(A3)-FIND(" ",A3)),FIND(":",RIGHT(A3,LEN(A3)-FIND(" ",A3)),FIND(":",RIGHT(A3,LEN(A3)-FIND(" ",A3)))+1)+1,2))

请注意,它是使用单元格A3设置的,时间作为需要格式化的文本。
3)您还应该能够使用excel的文本列功能位于数据功能区的一半左右。
4)当然,也有一种方法可以通过VBA作为一个选项来编码它。

r7xajy2e

r7xajy2e3#

=DATEVALUE(A1)+TIMEVALUE(A1)似乎也能正常工作,因为每个函数只返回与它在字符串中识别的值相对应的值。也就是说,DATEVALUE()忽略时间分量,而TIMEVALUE()忽略日期分量。

z9smfwbn

z9smfwbn4#

**完整日期时间转换的公认答案过于复杂。**Excel的VALUE()函数将实现所需的转换,而无需单独调用DATEVALUE()TIMEVALUE()

对于单元格A1中的“texty”日期(例如问题中提供的“3/24/2016 11:22:07 PM”):

=VALUE(A1)

将返回等效的Excel日期-时间值(大约为42453.97)。
请注意,VALUE()依赖于使用的区域设置。如果计算机上使用的是美国日期格式,而不是英国日期格式,则上述转换将有效。TEXT()DATEVALUE()TIMEVALUE()也是如此,因此接受的答案在文本日期与当前区域设置不匹配的情况下也不起作用。
如果您的日期格式不受支持,您需要更改操作系统的区域设置,或者自行从原始文本中解析日期。

简而言之:只需使用VALUE(),而不是TEXT()DATEVALUE()TIMEVALUE()的卷积组合。

相关问题