Excel VBA:date(单列,没有分隔符)的TextToColumns不工作?

我正在尝试使用没有分隔符的TextToColumns来格式化一个充满date的列。 date预先格式化为"dd.mm.yyyy hh:mm:ss" ,我想将其更改为"dd.mm.yy hh:mm"

这是我的代码:

 ActiveSheet.Range("G2:G" & lastRow).Select With Selection .NumberFormat = "dd.mm.yy hh:mm" .TextToColumns Destination:=Range("G2"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 4), _ TrailingMinusNumbers:=True End With 

这是macrorecorder给我的确切的代码( 在录制期间或者手动完成时,程序按预期工作 ),只有一个例外: Array(1, 4)以macros中的Array(1, 1)出现录音机。 但是,这些选项在VBA中都不起作用。

尝试不同Array值的想法是我从Rick Rothstein的答案中得到的: http : //www.mrexcel.com/forum/excel-questions/683477-text-column-not-working-within-macro.html也是相关的: https : //msdn.microsoft.com/en-us/library/office/ff193030(v=office.15).aspx

所以,每当我运行这些片段的任何变体,似乎默默地忽略整个TextToColumn位。 没有任何错误或exception,当我逐步完成时,它不会跳过代码行 – 它可以运行一切,但无论如何,预期的结果都无法实现。

示例数据:

上一篇:
25.06.2015 15:12:20

邮政(预期成果):
25.05.15 15:12

您可以使用VBA中的FORMAT()函数更改date范围。请参阅LINK HERE中的更多信息

像这样的东西可能会工作

 Format(whatEverYouAreChanging.value, "dd-mm-yyyy hh:mm") 

改变whatEverYouAreChanging到你的variables,希望这个工程

或者只是使用像dd / mm / yyyy hh:mm这样的自定义格式来格式化整列

如果非循环方法不起作用,则使用循环方法:

 Sub dural() Dim lastRow As Long, i As Long, t As String, d As Date lastRow = ActiveSheet.Cells(Rows.Count, "G").End(xlUp).Row For i = 2 To lastRow With Cells(i, "G") t = .Text ary = Split(t, " ") bry = Split(ary(0), ".") cry = Split(ary(1), ":") d = DateSerial(CInt(bry(2)), CInt(bry(1)), CInt(bry(0))) d = d + TimeSerial(CInt(cry(0)), CInt(cry(1)), CInt(cry(2))) .Clear .NumberFormat = "dd.mm.yy hh:mm" .Value = d End With Next i End Sub 

之前:

在这里输入图像说明

之后:

在这里输入图像说明