首页 > 解决方案 > 每当更改工作表时,我将如何编写将表格的列从文本转换为日期的 VBA 代码?

问题描述

我正在尝试为客户自动分析数据。他们的系统以文本格式导出数据,包括日期。为了使日期在我的分析中可用,需要将它们从文本转换为日期。手动,我知道的唯一方法是使用文本到列功能,将其设置为不带分隔符的分隔符,然后格式化为日期(因为只是格式化为日期会更改单元格格式,但实际上并没有隐藏输入)。此外,我希望每次修改工作表时都运行此代码。(具体来说,每个季度,不精通excel的用户将新数据复制粘贴到旧数据下面,表格列需要再次转换)。我的数据已经格式化为表格,所以我可以引用“Table2[Date Submitted]”来到达整个数据列,

我对VBA非常缺乏经验,只有基本知识。我一直试图在没有运气的情况下将文本重新创建到 sub 列。

Sub ConvertDates()
'
' ConvertDates Macro
' Converts text dates to usable excel dates MM/DD/YYYY
'
' Keyboard Shortcut: Ctrl+Shift+D
'
    Worksheets(3).Range("Table2[Date Submitted]").TextToColumns Destination:=Range("B9"), DataType:=xlDelimited,
        TextQualifier:=xlNone, ConsecutiveDelimiter:=True, Tab:=False, Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, _
        3)
End Sub

子不完整。但我还需要帮助建立它。

标签: excelvbaexcel-2016text-to-column

解决方案


要更改日期(我假设文本格式为“MM/DD/YYYY”),请尝试以下操作:

Sub ChangeDateFormat()

Dim rng As Range
With Sheet1 'Change to your referenced sheet's CodeName
    Set rng = .Range("Table2[Date Submitted]")
    rng.TextToColumns Destination:=rng, DataType:=xlFixedWidth, FieldInfo:=Array(0, xlMDYFormat)
    rng.NumberFormat = "MM/DD/YYY"
End With

End Sub

推荐阅读