Microsoft Excel VBA文本分割调整

我有一个Excel工作表,它使用macros来分隔一串文本,当它被扫描(通过即插即用条码扫描器)到第一列右侧的空格字符作为分隔符。 Excel工作表后跟Excelmacros的示例图片。

高强

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 

现在所有这些都可以正常工作,但是我需要对此进行一些调整。 我希望macros在第一个序列(“CNA1234567”)之后跳过列并将其留空 。 我怎样才能调整这个代码来做到这一点?

这个方法稍微更明确一些,会给你所有你想要的控制。

 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 

这工作:

 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较大,则可以先closures屏幕更新,然后再打开。

不pipe那个数字是多less,只要检查一下你是不是在上面。

 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