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
之前:
之后: