Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在excel中将文本字段转换为日期_Excel_Date - Fatal编程技术网

在excel中将文本字段转换为日期

在excel中将文本字段转换为日期,excel,date,Excel,Date,我有一个包含以下内容的文本字段的工作表: 2017年10月18日星期三,美国东部时间晚上9:30 我需要将其转换为日期格式。我不在乎时间,我只需要它看起来像这样:2017年10月18日 任何帮助都将不胜感激。解析字符串: =--(LEFT(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),2*999,999)),LEN(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),2*999,999)))-3) & " " &am

我有一个包含以下内容的文本字段的工作表:

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

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

任何帮助都将不胜感激。

解析字符串:

 =--(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))
然后根据需要格式化


如果要就地转换值,请选择相关单元格并运行此短宏:

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

这里还有一个公式建议

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

你真的应该展示你所做的任何尝试,无论是否有效。太棒了!我认为,如果OP的数据格式如上所示,那么公式可以简化<代码>=TRIM(MID(替换(替换(A1,FIND(“,”,A1,FIND(“,”,A1,1)+1)-2,2,“,”,”,REPT(“,999)),999999))+0也可以工作,这是基于您的想法。@ShrivallabhaRedij是的,但您错过了年份,并迫使Excel假定为当前年份。您是对的。你觉得怎么样?
=SUBSTITUTE(TRIM(MID)(SUBSTITUTE)(替换(A1,FIND(“,”,A1,FIND(“,”,A1,1)+1)-2,3,“,”,REPT(“,”,999)),99999)),“,”,”,“,”+0
@ShrivallabhaRedij是的,你应该加上它作为答案。它比我的短。