Answers:
您将需要进行字符串解析,然后将适当的格式化值传递到DATEVALUE
–这样的事情:
=DATEVALUE(RIGHT(A1,2)&"-"&MID(A1,6,3)&"-"&LEFT(A1,4))
(编辑:更新的公式-经过测试,它对我来说是一个示例-可能需要根据您的输入进行细化)
PARSEDATE([string_value], [date format])
请注意,月份名称特定于Windows区域选项。因此,如果Windows区域选项设置为乌克兰语,则DATEVALUE将返回#VALUE!表示“ 2012年11月7日”,但会接受“ 2012年7月7日”。
Excels DateValue函数取决于区域。如果您在欧洲解析诸如“ 04-11-2008”之类的字符串,则将其解析为11月4日,而在美国则将其解析为4月11日。
为了解决这个问题,您可以使用DateSerial函数并自己进行解析。这也可以很容易地适应您自己的非标准日期格式。
' Region independent date parsing
' Expects a datetimestr in the format "04-11-2008 21:39:39"
' The function VBA.DateTime.DateValue() mixes up the date and month in different regions
Function parseDateTime(dateTimeStr As String) As Date
Dim parts As Variant
parts = VBA.Strings.Split(dateTimeStr, " ")
Dim datePart As String, timePart As String
datePart = parts(0)
timePart = parts(1)
Dim dateParts As Variant, day As Integer, month As Integer, year As Integer
dateParts = VBA.Strings.Split(datePart, "-")
day = dateParts(0)
month = dateParts(1)
year = dateParts(2)
Dim parsed_date As Date, parsed_time As Date
parsed_date = VBA.DateTime.DateSerial(year, month, day)
parsed_time = VBA.DateTime.TimeValue(timePart)
parseDateTime = parsed_date + parsed_time
End Function