Excel宏文本到列的整列

时间:2015-07-09 13:03:33

标签: excel vba excel-vba

我从日志文件中获取了一些值,并希望在&#34 ;;"时将它们分开。出现!

这是我得到的代码

 Sub ClearTextToColumns()
    On Error Resume Next
    If IsEmpty(Range("A1")) Then Range("A1") = "XYZZY"

    Range("A1").Select
    Dim Time As Range
    Set Time = Range(ActiveCell, ActiveCell.Offset(0, 0))
    Do Until IsEmpty(ActiveCell)

       Range("A1").TextToColumns Destination:=Range("A1"), _
        DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, _
        Tab:=False, _
        Semicolon:=False, _
        Comma:=False, _
        Space:=False, _
        Other:=True, _
        OtherChar:=";"
    If Range("A1") = "XYZZY" Then Range("A1") = ""
    If Err.Number <> 0 Then MsgBox Err.Description

    ActiveCell.Offset(1, 0).Select
    Set newRange = Range(ActiveCell, ActiveCell.Offset(0, 0))
    MsgBox newRange.Address
    Loop

End Sub

只有A1行被修复....试图交换&#34; A1&#34;与时间范围,但没有任何奇迹...

1 个答案:

答案 0 :(得分:0)

我添加了评论,但也会添加一个答案,这将解决只有A1转换为列的问题。

您只需要确保要转换的整个范围都包含在.TextToColumns方法中。

您可以使用以下代码为其提供可变范围:

Sub split_text()
    Dim lrow As Long
    lrow = Cells(Rows.Count, 1).End(xlUp).Row
    Range(Cells(1, 1), Cells(lrow, 1)).TextToColumns Destination:=Range("A1"), _
            DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
            Semicolon:=True, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
End Sub