如何将date时间戳分成两列?

我有一个包含两个不同的date时间格式的列的电子表格,我试图分成一个标准化的列。 这两种格式是这样的:

21/09/2017 7:39 14/07/17 13:47 

我已经尝试单独分离date时间组件,但它似乎YEAR函数不喜欢parsing两位数date。 作为一个贫民区的解决方法,我已经做了一个查找和replace,但这是不可持续的。 任何杰出的天才都有我应该看的任何想法或function?

干杯

既然你想要一个VBA回应你的问题,在这里。

您将需要对范围进行调整,因为这只能从A1取消(您没有用文本date指定原始范围,也没有指定新的date和时间的范围)。

 Option Explicit Sub SplitDateAndTime() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets(1) Dim RawVal As String, RawDate As String, RawTime As String RawVal = ws.Range("A1").Value RawDate = Split(RawVal, " ")(0) RawTime = Split(RawVal, " ")(1) Dim NewDate As Date, NewTime As Date NewDate = CDate(RawDate) NewTime = CDate(RawTime) ws.Range("A1") = NewDate ws.Range("B1") = NewTime End Sub 

请注意,这个公式假定你所有的date都在2000年以后。如果不是这样,请告诉我,我会找出其他的东西。

它看起来像你的第一个date被认为是一个适当的date时间,而你的第二个是文本值。

这是我制定的:

截图1

date和时间列中都有一个=IFERROR公式。 第一个公式在date时间格式中工作,第二个在文本格式上工作,可以拖动到任何单元格引用。

这是B1中的公式:

 =IFERROR(DATE(TEXT(A2,"yyyy"),TEXT(A2,"mm"),TEXT(A2,"dd")), DATE(MID(MID(A2,FIND("/",A2)+1,5),FIND("/",MID(A2,FIND("/",A2)+1,5))+1,2)+2000,MID(A2,FIND("/",A2)+1,2),LEFT(A2,FIND("/",A2)-1))) 

这是C1中的公式:

 =IFERROR(TIME(TEXT(A2,"hh"),TEXT(A2,"mm"),0),TIME(LEFT(MID(A2,FIND(":",A2)-2,5),FIND(":",MID(A2,FIND(":",A2)-2,5))-1),MID(MID(A2,FIND(":",A2)-2,5),FIND(":",MID(A2,FIND(":",A2)-2,5))+1,256),0)) 

假设您的数据在列A上,以获得date

 =DATEVALUE(MID(A1,1,FIND(" ",A1)-1)) 

T0得到的时间假设你的数据在列A上

 =TIMEVALUE(MID(A1,FIND(" ",A1)+1,5))