2015-07-21 35 views
1

我有一個Excel工作表,它使用宏將文本字符串拆分時(通過插入&播放條形碼掃描程序)將文本拆分到右側第一列,使用空格字符作爲分隔符。 Excel表格後跟Excel宏的示例圖片。Microsoft Excel VBA文本拆分調整

excel

Sub textsplit(rng As Range) 
    Dim c As Range, Arr 

    For Each c In rng.Cells 
     If Len(c.Value) > 0 Then 
      Arr = Split(c.Value, " ") 
      c.Offset(0, 1).Resize(1, UBound(Arr) + 1).Value = Arr 
     End If 
    Next c 
End Sub 

現在,這一切完美的作品,但我需要做一個小調整到這一點。 我希望宏在第一個序列(「CNA1234567」)後跳過該列並將其留空。我怎樣才能調整這個代碼來做到這一點?

+2

您是說,根據您的圖表,您希望「4512517」進入「PA編號」欄。 如果不是,你能張貼另一張圖片嗎?應該看起來像什麼? – LimaNightHawk

+1

「在第一個序列之後跳過列*」*後面的*表示您希望材料號保留空白嗎? –

+1

@LimaNightHawk好問題。在下面我寫的代碼中,我認爲這個問題的答案是「是」,但你說的確實不清楚。 –

回答

3

這種方法是多一點明確的,並給你所有你想要的控制。

Sub textsplit(rng As Range) 
    Dim c As Range 
    Dim r As Long 
    Dim Arr As Variant 

    For Each c In rng.Cells 
     If Len(c.Value) > 0 Then 

      r = c.Row 

      Arr = Split(c.Value, " ") 
      With Sheet1 
       .Cells(r, 2).Value = Arr(0) 
       '.Cells(r, 3).Value = <--- skipped 
       .Cells(r, 4).Value = Arr(1) 
       .Cells(r, 5).Value = Arr(2) 
       .Cells(r, 6).Value = Arr(3) 
       .Cells(r, 7).Value = Arr(4) 
       .Cells(r, 8).Value = Arr(5) 
      End With 
     End If 
    Next c 
End Sub 
+0

謝謝利馬,就像約翰的解決方案一樣工作,但是更便於用戶使用,以防我想要跳過每一項更改。你搖滾。 – Namorg

0

3Whatever數列來覈對一下你是不是就可以了。

Sub textsplit(rng As Range) 
    Dim c As Range, Arr 

    For Each c In rng.Cells 
     If c.Column <> 3 Then 
      If Len(c.Value) > 0 Then 
       Arr = Split(c.Value, " ") 
       c.Offset(0, 1).Resize(1, UBound(Arr) + 1).Value = Arr 
      End If 
     End if 
    Next c 
End Sub 
1

這工作:

Sub textsplit(rng As Range) 
    Dim c As Range, Arr As Variant 
    Dim i As Long 

    For Each c In rng.Cells 
     If Len(c.Value) > 0 Then 
      Arr = Split(c.Value, " ") 
      For i = 0 To UBound(Arr) 
       c.Offset(0, IIf(i > 0, i + 2, i + 1)).Value = Arr(i) 
      Next i 
     End If 
    Next c 
End Sub 

如果rng大可以先關閉屏幕更新,然後再開啓。

+0

這正是我需要的。謝謝約翰! – Namorg