【问题标题】:VBA TextToColumns - Date formatVBA TextToColumns - 日期格式
【发布时间】:2019-10-23 15:18:24
【问题描述】:

宏 TextToColumns 有问题:我有两种日期格式,一种以 01:00 结尾,另一种以 03:00 结尾,例如:

14/10/2019 03:00

08/06/2019 01:00

当我运行宏时:

    Worksheet.Columns("A:A").TextToColumns Destination:=Worksheet.Range("A1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=True, Space:=False, Other:=False, DecimalSeparator:="."

我有结果:

我需要将所有数据的格式都设置为底部的格式,但我不能通过数字 -> 格式 -> 自定义来实现。

如果您知道我的宏有什么问题,我将不胜感激?

谢谢!

【问题讨论】:

  • 为什么要在此处对列进行文本处理?日期和时间是 Excel 的数字。日期是整数,时间是日期的浮点数......因此,如果您只想显示日期而不是格式,请将每个日期的数字四舍五入,只留下没有时间的日期。
  • 看起来你想在空间上分割?然而你有Comma:=True, Space:=False。你试过Comma:=False, Space:=True吗?也就是说,似乎只需要将日期字符串解析为Date 值,用Date 覆盖字符串,然后使用数字格式删除时间部分。

标签: excel vba text-to-column


【解决方案1】:

目前您已将其设置为以逗号而不是空格分隔,这可以解释为什么没有任何内容被分隔。

当它拆分时,您将获得四列数据,因此我编写了一些代码来创建和删除临时列以保护您可能在右侧单元格中拥有的数据。

输出列的格式也设置为一般,因此它默认为日期并且在末尾不显示空白时间。

With Sheets("Sheet1")
    .Columns("B").NumberFormat = "General"
    .Columns("C:E").Insert Shift:=xlToRight
    .Columns("A").TextToColumns Destination:=.Columns("B"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=True, Other:=False, DecimalSeparator:="."
    .Columns("C:E").Delete
End With

如果您需要任何帮助或进一步解释,请发表评论,我会尽快回复您。

【讨论】: