如果您必须使用 VBA,我个人确实喜欢两种方法。想象一下以下数据:
1. Split
根据给出的 cmets,您可以使用一个名为 Split 的函数。这是一个小脚本,展示了如何通过一个小循环来处理这个问题:
Sub UseSplit()
Dim arr As Variant
Dim lr As Long, x As Long
With Sheet1 'Change CodeName accordingly
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
arr = .Range("A1:A" & lr)
For x = LBound(arr) To UBound(arr)
.Cells(x, 2).Resize(1, UBound(Split(arr(x, 1), ";")) + 1) = Split(arr(x, 1), ";")
Next x
End With
End Sub
2. TextToColumns
第二种方法是利用内置函数使用TextToColumns 函数将分隔文本写入其他列。这不会涉及循环。下面是一个小例子:
Sub UseSplit()
Dim rng As Range
Dim lr As Long
With Sheet1 'Change CodeName accordingly
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rng = .Range("A1:A" & lr)
rng.TextToColumns Destination:=.Range("B1"), Semicolon:=True
End With
End Sub
这样做的好处是,Split 将返回一个字符串值数组,而文本到列则不会:
本来应该是数字的值,实际上是数字。
问题仍然存在,您真的需要通过 VBA 工作吗?不管怎样,祝你的项目好运=)