2016-01-12 11 views
0

我有一列電話號碼(其中一些具有分號(;)或冒號(,列D) )分開兩個電話號碼。
我想拆分兩個電話號碼,並將第二個列放在左邊(比如B列),將第一個留在原始D列單元格中。如果單元格中只有一個電話號碼,則保持獨立。
我知道它可能會使用UBound和Split Array?但是如何?
有人可以幫我嗎?
謝謝。如何使用UBound拆分列中的字符串並將分隔的字符串置於VBA中的另一列

+0

爲什麼不使用單元格公式? 'find','left','right'和'if' – Dan

回答

1

如果你是絕對肯定的是,他們只能在小區兩個電話號碼,這應該做的伎倆,或至少它爲我:

Option Explicit 

Sub test() 

Dim chkRng As Range 
Dim cell As Range 
Dim arr As Variant 

Set chkRng = Range("D1:D" & (Range("D" & Rows.Count).End(xlUp).Row)) 

For Each cell In chkRng 

    If InStr(1, cell.Value, ",") > 0 Then 

     arr = Split(cell.Value, ",") 

    ElseIf InStr(1, cell.Value, ";") > 0 Then 

     arr = Split(cell.Value, ";") 

    Else 
     GoTo continue 

    End If 

    cell.Offset(, -2).Value = Trim(arr(1)) 
    cell.Value = Trim(arr(0)) 

continue: 
Next cell 

End Sub 
+0

是的,它的工作原理。謝謝。 – lukayl

0

可能有更簡單的方法來做到這一點,但您可以使用Instr函數來定位分號(;)或逗號(,),然後將它們分開。例如,下面的工作:

Sub SeparateNumbers() 

Dim Rng As Range 

Set Rng = ActiveSheet.Range("D1:D" & ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row) 

For Each Cell In Rng 
    If InStr(1, Cell.Value, ";") Then 
     Cell.Offset(0, -2).Value = Trim(Mid(Cell.Value, InStr(1, Cell.Value, ";") + 1, (Len(Cell.Value) - (InStr(1, Cell.Value, ";"))))) 
     Cell.Value = Mid(Cell.Value, 1, InStr(1, Cell.Value, ";") - 1) 
    End If 
    If InStr(1, Cell.Value, ",") Then 
     Cell.Offset(0, -2).Value = Trim(Mid(Cell.Value, InStr(1, Cell.Value, ",") + 1, (Len(Cell.Value) - (InStr(1, Cell.Value, ","))))) 
     Cell.Value = Mid(Cell.Value, 1, InStr(1, Cell.Value, ",") - 1) 
    End If 
Next Cell 

End Sub 
1

試試這個

Sub rep() 

For Each c In Sheets("Sheet1").Range("D1:D65").Cells ' Change the range that you want 

    If InStr(c.Value, ",") > 0 Then 

     phonNumb = Split(c, ",") 
     Range("D" & c.Row) = phonNumb(0) 
     Range("C" & c.Row) = phonNumb(1) 

    ElseIf InStr(c.Value, ";") > 0 Then 

     phonNumb = Split(c, ";") 
     Range("D" & c.Row) = phonNumb(0) 
     Range("C" & c.Row) = phonNumb(1) 
    End If 

Next c 

End Sub 
+0

是的,它的工作原理。但我認爲這兩個Ifs可以與ElseIf合併?謝謝。 – lukayl

+0

其實你是對的。我編輯代碼 – manu

相關問題