2016-06-07 35 views
0

我正在嘗試使用VBA來分隔單元格中使用連字符和正斜槓作爲分隔符的文本。使用其中一個很簡單。但是,這些字符都不是Excel中的標準分隔符,我無法弄清楚如何使用兩個自定義分隔符。帶有兩個自定義分隔符的Excel TextToColumns

我知道Excel有一個文本到列的功能,使用起來更容易,不需要我編寫任何代碼,但這是一個更大的項目的一部分,需要它在VBA中。

這是我的代碼。

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

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

試圖做一些與字符串函數魔術將是我的下一個想法,但我想知道是否有人在那裏有第一

+3

不能使用多單自定義分隔符更多。使用變體數組,用正斜槓替換連字符(反之亦然),然後拆分您決定的分隔符,然後將值返回給工作表。 – Jeeped

+0

如果所有數據都在單個單元格中(正如寫入的代碼所建議的那樣),我不確定是否需要變體數組。一個替換看起來就足夠了。 –

回答

1

更好的想法繼@Jeeped建議,以限制單分隔符,我用SUBSTITUTE函數爲所有實例用正斜槓替換連字符。最後,根據Macro記錄器添加了Text-To-Column的VBA代碼,即不簡化。這是因爲我希望OP有彈性來爲更多的分隔符實例提供保留。 P1。試試這個:

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

+0

@drylkuch很高興它適合你。:-) – skkakkar