在Excel中将日期和时间文本转换为日期和时间格式

时间:2018-11-15 00:23:24

标签: excel excel-formula

是否可以在Excel中将以下文本格式化为日期和时间格式?我没有尝试的方法。

Fri, November 16 2018 8:00 PM

我尝试做以下事情,但是没有运气。

=TEXT("Fri, November 16 2018 8:00 PM","ddd, mmm d yyyy h:mm AM/PM")

4 个答案:

答案 0 :(得分:1)

您可以创建自己的自定义UDF并将其用作工作表函数:

Public Function myDateToDate(inputRng As Range) As Date

    With CreateObject("VBScript.RegExp")
        .Pattern = "\w{3},\s(\w+\s\d+\s\d+)\s(\d+:\d+\s\w+)"
        If .test(inputRng.Value) Then
            With .Execute(inputRng.Value)(0).SubMatches
                myDateToDate = CDate(.Item(0)) + CDate(.Item(1))
            End With
        End If
    End With

End Function

这将使用Regular Expressions (RegEx)来获取字符串中的值,并同时捕获日期和时间。由于在Excel中所有日期都是数字,因此可以将第一个捕获组(\w+\s\d+\s\d+)(代表日期)和第二个捕获组(\d+:\d+\s\w+)(代表时间)加在一起。 (请参阅正则表达式模式here的工作原理)

完成此操作后,现在可以通过使用工作表公式=myDateToDate(A1)使用新创建的UDF-其中A1将替换为包含日期的单元格/字符串。

  

enter image description here


如果您不熟悉VBA,请继续阅读:

  

如何访问VBE?
  在工作簿中时,按 Alt + F11 可以访问VBE。

     

好的,所以我打开了VBE。现在如何应用此Sub / UDF?
  在左窗格中,您将看到您的工作簿对象模块。这称为项目资源管理器。您将需要创建一个新模块,可以通过right-clicking inside the Project Explorer > Insert > Module

     

enter image description here

     

现在您可以将Sub / UDF粘贴到此新模块中,一切就绪!

答案 1 :(得分:1)

如果要避免使用VBA,则需要使用DATEVALUETIMEVALUE函数。不幸的是,这些函数不够聪明,无法转换您描述的文本,但是在输入这些函数之前,您仍然可以使用单元格公式拆分文本。 下面的公式会将文本Fri, November 16 2018 8:00 PM转换为日期/时间值(假设文本位于单元格A1中)。

=DATEVALUE(SUBSTITUTE(MID(A1, FIND(" ",A1)+1, FIND("|", SUBSTITUTE(A1," ","|",4))-FIND(" ",A1)), " ", ", ", 2)) + TIMEVALUE(RIGHT(A1, LEN(A1)-FIND("|", SUBSTITUTE(A1," ","|",4))))

答案 2 :(得分:1)

一个怪物,但应该是独立于语言环境的(美国或英国):

=DATE(LEFT(RIGHT(A1,13),5),MONTH(DATEVALUE(LEFT(MID(A1,6,9),FIND(" ",MID(A1,6,10)))&"1")),MID(MID(A1,FIND(" ",A1)+1,99),FIND(" ",MID(A1,FIND(" ",A1)+1,99))+1,2))+LEFT(TRIM(RIGHT(A1,8)),7)

答案 3 :(得分:0)

上面不错的正则表达式解决方案,您也可以采用其他方式:

Function ConvertToDate(str As String) As Date

    Dim arr() As String

    arr = Split(str, " ")

    ConvertToDate = CDate(arr(3) & "/" & Month("01/" & arr(1) & "/2018") & "/" & arr(2) & " " & arr(4))

End Function