Microsoft Excel VBA 文本拆分调整

Microsoft Excel VBA text split tweak

我有一个 Excel sheet,它使用宏在使用 space 字符作为分隔符。 Excel sheet 后跟 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") 之后的列并将其留空。我该如何调整此代码来执行此操作?

3无论该列是什么数字,请检查您是否在其中。

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

这个有效:

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 很大,您可以先关闭屏幕更新,然后再打开。

此方法更明确一些,可以为您提供所需的所有控制权。

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