【问题标题】:How would I write a VBA code which converts columns of a table from text to dates whenever the worksheet is changed?每当更改工作表时,我将如何编写将表格的列从文本转换为日期的 VBA 代码?
【发布时间】:2019-10-21 20:52:45
【问题描述】:

我正在尝试为客户自动分析数据。他们的系统以文本格式导出数据,包括日期。为了使日期在我的分析中可用,它们需要从文本转换为日期。手动,我知道的唯一方法是使用文本到列功能,将其设置为不带分隔符的分隔符,然后格式化为日期(因为只是格式化为日期会更改单元格格式,但实际上并没有隐藏输入)。此外,我希望每次修改工作表时都运行此代码。 (具体来说,每个季度,不精通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

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

【问题讨论】:

    标签: excel vba excel-2016 text-to-column


    【解决方案1】:

    如果我正确理解了您的问题,您将获得实际上是文本的“数字”。虽然它们看起来像数字;他们不是。

    Excel 中的日期只是数字,您是否尝试过创建一个变量,比如 tempHolder 和 dim as long?然后将其中一个单元格存储在该变量中并将其写入新单元格。 在 B1 类型中:

    =a1*b1 
    

    这应该将值转换为数字。但我需要一个例子来玩弄。

    写一个循环(假设可行),你就有了转换的方法

    【讨论】:

      【解决方案2】:

      要更改日期(我假设文本格式为“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
      

      【讨论】:

      • @devinamber,请提供一些反馈,让我知道这是否适合您。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多