【问题标题】:How do I convert Excel General Text to Date如何将 Excel 常规文本转换为日期
【发布时间】:2021-10-11 08:29:46
【问题描述】:

所以我的问题是我有一个在 Excel 中定义为 General 的日期,因为“2021 年 7 月 10 日 10:30”我想将其设为 Excel 日期。

请看我的图片以了解详细信息。

需要任何类型的解决方案来自动化此 VBA 或任何公式,

提前致谢

【问题讨论】:

  • 一个 日期/时间 值是 - 应用(默认)格式进行显示。没有特殊的“Excel 日期”。会是什么?
  • Excel as this "10 JUL 2021 10:30, I want to Make it like 7/10/2021. 但我不能从简单的 Excel 数据类型更改它,"2021 年 7 月 10 日 10:30它被识别为字符串,当它被识别为字符串时不能做公式工作

标签: excel vba date


【解决方案1】:

如果需要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 根据您为系统指定的短日期格式识别月、日和年的顺序”。所以,它可能有效,也可能无效。

在我的情况下它没有......

【讨论】:

    【解决方案2】:

    我刚刚尝试使用DateValue() 工作表函数,一切正常(普通 Excel 公式,不需要 VBA):

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

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

    根据评论编辑:

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

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

    【讨论】:

    • 问题是日期和时间之间有一个逗号,例如“07 JUL 2021, 10:30”
    • @SanjibSamadder:逗号不在您的问题中(您提到了一张图片,但我什么也没看到)。尽管如此,删除那个逗号并在之后使用DateValue()并不是一个大问题。我已经相应地编辑了我的答案。
    猜你喜欢
    • 2012-11-30
    • 2020-07-04
    • 1970-01-01
    • 2011-03-02
    • 2021-01-05
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多