Excel VBA从字符串获取日期
如果我有一个包含以下内容的单元格:Excel VBA从字符串获取日期,excel,vba,Excel,Vba,如果我有一个包含以下内容的单元格: Tuesday, April 16th 2009 如何将该字符串转换为Excel可识别的日期格式。我想我必须使用MID()和FIND()函数。假设文本在A1中,我们可以将其分解为单独的部分,然后使用DATEVALUE将其组合在一起 B1: =MID(A1,FIND(" ",A1)+1,FIND(" ",A1,FIND(" ",A1)+2)-FIND(" ",A1)) B2: =IFERROR(VALUE(MID(A1,FIND(" ",A1,FIND(" "
Tuesday, April 16th 2009
如何将该字符串转换为Excel可识别的日期格式。我想我必须使用MID()和FIND()函数。假设文本在A1中,我们可以将其分解为单独的部分,然后使用
DATEVALUE
将其组合在一起
B1: =MID(A1,FIND(" ",A1)+1,FIND(" ",A1,FIND(" ",A1)+2)-FIND(" ",A1))
B2: =IFERROR(VALUE(MID(A1,FIND(" ",A1,FIND(" ",A1)+2),3)),VALUE(MID(A1,FIND(" ",A1,FIND(" ",A1)+2),2)))
B3: =RIGHT(A1,4)
B4: =DATEVALUE(B2&" "&B1&" "&B3)
或者,您可以一次完成:
=DATEVALUE(IFERROR(VALUE(MID(A1,FIND(" ",A1,FIND(" ",A1)+2),3)),VALUE(MID(A1,FIND(" ",A1,FIND(" ",A1)+2),2)))&" "&MID(A1,FIND(" ",A1)+1,FIND(" ",A1,FIND(" ",A1)+2)-FIND(" ",A1))&" "&RIGHT(A1,4))
这是一个可以从VBA工作的函数,它是一个用户定义的函数
Function GetDate(InString As Range) As Date
Dim newDate As Date
Dim tmpDate As String
'Sample Date
'Tuesday, April 16th 2009
'Remove the Day of the Week.
tmpDate = Trim(Mid(InString, InStr(InString, ",") + 1))
'Get rid of "th"
tmpDate = Replace(tmpDate, "th ", " ")
'Get rid of "rd"
tmpDate = Replace(tmpDate, "rd ", " ")
'Get rid of "nd"
tmpDate = Replace(tmpDate, "nd ", " ")
'Get rid of "st"
tmpDate = Replace(tmpDate, "st ", " ")
'Convert string to date
newDate = DateValue(tmpDate)
GetDate = newDate
End Function
谢谢,剧本写得很好。我修改了,因为在西班牙语中日期写得不同。例如:“2009年4月16日,星期二”是“2009年4月16日,Martes”。正如你所看到的,没有“th”,“rd”或任何这些字符。因此,我没有删除它们,而是将脚本更改为删除“de”。工作得很有魅力。