Function TextToDateX(txt As String) As Date
Dim arrD, arrM
arrM = Split("JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC", ",")
arrD = Split(txt, " ")
TextToDateX = DateSerial(CLng(arrD(2)), Application.match(arrD(1), arrM, 0), CLng(arrD(0))) + CVDate(arrD(3))
End Function
它可以被测试为:
Sub testTextToDateX()
Dim txt As String, d As Date
txt = "10 JUL 2021 10:30"
d = TextToDateX(txt)
Debug.Print Format(d, "dd/mm/yyyy hh:mm")
End Sub
2条答案
按热度按时间q5iwbnjs1#
如果需要VBA提取日期,请使用下一个函数:
它可以被测试为:
DateValue
与本地化相关。Microsoft声明:“DateValue根据您为系统指定的短日期格式识别月、日和年的顺序”。因此,它可能有效,也可能无效。在我的情况下,它不…
dtcbnfnu2#
我刚刚尝试使用
DateValue()
工作表函数,每个都工作正常(正常的Excel公式,不需要VBA):有一件事你可能会感兴趣:存在一个单元格格式(
dd mmm yyyy hh:mm
),您似乎正在使用它。(当您在任何单元格上应用此格式时,其中的值会自动格式化为这种日期格式。)编辑,基于评论:
如果日期字符串中有逗号,请先删除它,然后应用
DateValue()
函数: