1 背景
下载了一个外网的数据,有一列是美国的“州+,+县”,使用分列的将两者分开一直不成功,想了一下vba其实有很多种方式可以实现分列功能,记下来权当复习。
2 分列方法
2.1 函数法
Sub 函数法()
Dim i, result
i = 1
Do While Range("a" & i) <> ""
result = Split(Range("a" & i), ",")
Range("b" & i) = result(0)
Range("c" & i) = result(1)
i = i + 1
Loop
End Sub
2.2 数组法
Sub 数组法()
Dim arr, i, result
arr = Range("a1").CurrentRegion
For i = 1 To UBound(arr)
result = Split(arr(i, 1), ",")
Range("b" & i) = result(0)
Range("c" & i) = result(1)
Next
End Sub
2.3 正则法
Sub 正则法()
Dim 正则, i, 字符串, 结果集合, 结果
Set 正则 = CreateObject("vbscript.regexp")
正则.Pattern = "(.+),(.+)"
正则.Global = True
i = 1
Do While Range("A" & i) <> ""
字符串 = Range("A" & i)
Set 结果集合 = 正则.Execute(字符串)
If 结果集合.Count > 0 Then
For Each 结果 In 结果集合
Range("B" & i) = 结果.submatches(0)
Range("C" & i) = 结果.submatches(1)
Next
End If
i = i + 1
Loop
Set 正则 = Nothing
Set 结果集合 = Nothing
End Sub