【问题标题】:Excel VBA to convert text to dateExcel VBA 将文本转换为日期
【发布时间】:2021-02-07 21:30:44
【问题描述】:

我的日期采用“yyyy.mm.dd”格式文本,我想将它们转换为日期。
此代码有效:

x = "2012.01.01"
d = DateSerial(Left(x, 4), Mid(x, 6, 2), Right(x, 2))

但是有没有更简单的方法呢?
我认为这会起作用(这应该很简单),但事实并非如此:

d = Format(x, "yyyy.mm.dd")

【问题讨论】:

    标签: excel vba date


    【解决方案1】:

    对于您的具体示例,请尝试以下操作:

    d= Replace(x, ".", "/")
    d= Format(CDate(d),"yyyy/mm/dd"))
    

    转换为日期的实际函数:

    CDate(d)
    

    发件人:https://www.techonthenet.com/excel/formulas/cdate.php

    Microsoft Excel CDATE 函数将值转换为日期。

    CDATE 函数是 Excel 中的一个内置函数,它被分类为 作为数据类型转换函数。它可以用作 VBA 函数 (VBA) 在 Excel 中。作为 VBA 函数,您可以在宏中使用此函数 通过 Microsoft Visual Basic 编辑器输入的代码。

    总结一下:CDATE是转换为日期的实际方法,但它有句号的问题。

    该格式用于执行字符串格式化 - 但实际转换是使用 CDATE 完成的。

    【讨论】:

    • 谢谢。我看过CDATE,但不明白为什么它不接受“.”,只接受“/”。在sql中,你可以指定像to_date('2012.01.01','yyyy.mm.dd')这样的格式,和它将被转换为日期。
    • 是的..我也看到了。它似乎与“。”一起死去。但适用于'/'
    【解决方案2】:

    Format 用于将日期值格式化为文本,而不是转换为日期值。因此:

    Dim d As Date
    
    x = "2012.01.01"
    d = CDate(Replace(x, ".", "/"))
    

    然后将日期格式应用于要显示这些值的单元格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 2017-10-21
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多