带有两个自定义分隔符的Excel TextToColumns

时间:2016-06-07 18:54:26

标签: excel vba excel-vba delimited-text

我正在尝试使用VBA来使用连字符和正斜杠作为分隔符来分隔单元格中的文本。使用其中一个相当简单。但是,这些字符都不是Excel中的标准分隔符,我无法弄清楚如何使用两个自定义分隔符。

我知道Excel具有更容易使用的文本到列功能,并且不需要我编写任何代码,但这是需要它在VBA中的大型项目的一部分。 / p>

这是我的代码。

Dim wireIDCell As Range
Set wireIDCell = Range("A1")

wireIDCell.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
    Other:=True, OtherChar:="/"

尝试用字符串函数做某种魔术将是我的下一个想法,但我想知道是否有人在那里有任何更好的想法

1 个答案:

答案 0 :(得分:1)

在@Jeeped建议限制为单个分隔符之后,我使用SUBSTITUTE函数用所有实例的正斜杠替换连字符。最后根据宏记录器添加了Text-To-Column的VBA代码,即未简化。这是因为我希望OP具有灵活性,以便为更多的分隔符实例提供服务。 PL。试试这个:

 Sub Text_to_col()
    Dim rng As Range
    Dim r As Range
    Set rng = ActiveSheet.UsedRange
    For Each r In rng
        r.Value = Application.WorksheetFunction.Substitute(r.Value, "-", "/")
    Next r

    With ActiveSheet.UsedRange.Columns("A").Cells
        .TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="/", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1)), _
        TrailingMinusNumbers:=True
    End With
End Sub


   [![snapshot of sample data and results][1]][1]

enter image description here