2
获取日期如果我有以下的单元:Excel的VBA从一个字符串
Tuesday, April 16th 2009
如何转换该字符串为用Excel认可的日期格式。我想我必须使用MID()和FIND()函数。
获取日期如果我有以下的单元:Excel的VBA从一个字符串
Tuesday, April 16th 2009
如何转换该字符串为用Excel认可的日期格式。我想我必须使用MID()和FIND()函数。
这里是将从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
假设文本是在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))
+1工作的函数:好的,干净 – SeanC
谢谢,剧本运作良好。我修改是因为在西班牙语中,日期写成不同。例如:'2009年4月16日星期二'为'Martes,2009年4月16日'。所以你可以看到没有'th','rd或者其中任何一个角色。因此,我不是将它们删除,而是更改脚本以删除“de”。像魅力一样工作。 – capm