【发布时间】:2016-07-15 13:42:38
【问题描述】:
我的数据是从应用程序中提取的,它的文本看起来像 Excel 中的日期/时间。如何将“3/24/2016 11:22:07 PM”(文本)实际转换为实际日期/时间转换?我试过格式化单元格,但它不起作用。
【问题讨论】:
标签: excel date time data-conversion
我的数据是从应用程序中提取的,它的文本看起来像 Excel 中的日期/时间。如何将“3/24/2016 11:22:07 PM”(文本)实际转换为实际日期/时间转换?我试过格式化单元格,但它不起作用。
【问题讨论】:
标签: excel date time data-conversion
对于日期转换:
=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 包含您要转换的数据。
顺便说一句,您可能希望将单元格格式化为日期/时间或其他格式。
希望对您有所帮助。
【讨论】:
=DATEVALUE(LEFT(A1,10))+TIMEVALUE(RIGHT(A1,11))。
DATEVALUE 期望的特定日期格式中看起来像 A1。正如"MM/DD/YYY" 的格式TEXT 不是一个选项,而是一个需求。
1) 尝试使用 DATEVALUE 函数,看看它是否适合您。
2) 一种更可靠的方法,因为 datevalue 并不总是有效,是手动剥离文本并将其插入到 Excel 日期值中。您将要使用以下功能的组合:
现在,在我看来,最简单的方法是使用多个帮助列来构建所有步骤。每步一列。当您得到最终答案时,您可以将辅助列中的公式替换或复制粘贴到最终公式中,直到剩下一个变量。我这么说的原因是,如果你打错字、忘记括号或出现问题,最终只引用 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 对其进行编码。
【讨论】: