如何将Excel常规文本转换为日期?

5jvtdoz2  于 2023-04-22  发布在  其他
关注(0)|答案(2)|浏览(579)

我的问题是我有一个日期在Excel中定义为“常规”,即“10 JUL 2021 10:30”。我想将其设置为Excel日期。
请看我的照片详细了解。
我需要任何一种解决方案来自动化这个VBA或任何公式。

q5iwbnjs

q5iwbnjs1#

如果需要VBA提取日期,请使用下一个函数:

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

DateValue与本地化相关。Microsoft声明:“DateValue根据您为系统指定的短日期格式识别月、日和年的顺序”。因此,它可能有效,也可能无效。
在我的情况下,它不…

dtcbnfnu

dtcbnfnu2#

我刚刚尝试使用DateValue()工作表函数,每个都工作正常(正常的Excel公式,不需要VBA):

=DATEVALUE("07 JUL 2021 10:30")

有一件事你可能会感兴趣:存在一个单元格格式(dd mmm yyyy hh:mm),您似乎正在使用它。(当您在任何单元格上应用此格式时,其中的值会自动格式化为这种日期格式。)

编辑,基于评论:

如果日期字符串中有逗号,请先删除它,然后应用DateValue()函数:

=DATEVALUE(SUBSTITUTE("07 JUL 2021, 10:30",",",""))

相关问题