在Excel中将文本字段转换为date

我有一个工作表,其中包含以下文本字段:

星期三,2017年10月18日,美国东部夏令时间晚上9:30

我需要将其转换为date格式。 我不在乎时间,我只需要它看起来像这样:10/18/2017。

任何帮助,将不胜感激。

parsingstring:

=--(LEFT(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),2*999,999)),LEN(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),2*999,999)))-3) & " " & TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),999,999)) & " " & LEFT(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),3*999,999)),LEN(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),3*999,999)))-1)) 

然后格式化你想要的。

在这里输入图像描述

如果您想要就地转换这些值,请select相应的单元格并运行这个短的macros:

 Sub INeedADate() Dim r As Range, d As Date, s As String, DQ As String DQ = Chr(34) For Each r In Selection ary = Split(r.Text, " ") s = DQ & ary(1) & " " & numpart(ary(2)) & ", " & Left(ary(3), 4) & DQ r.Formula = "=DATEVALUE(" & s & ")" r.NumberFormat = "mm/dd/yyyy" Next r End Sub Public Function numpart(s) As String Dim L As Long, i As Long L = Len(s) numpart = "" For i = 1 To L If IsNumeric(Mid(s, i, 1)) Then numpart = numpart & Mid(s, i, 1) Next i End Function 

这里有一个公式build议。

 =SUBSTITUTE(TRIM(MID(SUBSTITUTE(REPLACE(A1,FIND(",",A1,FIND(",",A1,1)+1)-2,3,"|"),",",REPT(" ",999)),999,999)),"|",",")+0 

在这里输入图像说明