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
我有一个 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