拆分数据没有明显一致的分隔符:Excel – VBA

我试图将我的Excel数据分成不同的列。 我所获得的数据在分隔符方面是不一致的,但是数据有一些属性可以帮助将它们分隔成列。 问题是,我在Excel和VBA方面的知识有限。 以下是我想分成几列的一个例子。

在这里输入图像说明

从上面的图片可以看出,只需使用一个简单的脚本来分隔单个分隔符的数据就行不通,因为这些地址可以在一个build筑物,一个单元或者一个单独的属性中。 但是,我注意到郊区,州和国家都是大写字母。 这意味着我可以与之合作。

到目前为止,我所有的代码都是使用逗号分隔符将活动单元格分成多个单元格。

Sub SplitColoumn() Dim rng As range s = Split(ActiveCell, ",") Set rng = ActiveCell rng.Select Set rng = rng.Resize(1, 1 + UBound(s) + 1) rng.Select rng = s End Sub 

结果如预期的那样,因为所有这些代码将会分割活动单元格,但我似乎无法弄清楚如何使用循环,并有更多的约束控制。

我想把这些地址分成街道,郊区,州和邮政编码。

谢谢

编辑:我现在添加了图像,我不知道为什么它没有出现的第一次。

我想把这些地址分成街道,郊区,州和邮政编码

我假设你的意思是街道,城市,县,国家和邮政编码单独列?

设置对Microsoft VBScript RegularExpression 5.5的引用。 调整以下代码(范围):

 Dim rex As RegExp Dim m As Match, mc As MatchCollection Dim ran As Range, cel As Range Set rex = New RegExp rex.Pattern = "([\w\d\s\,]+?)\,([AZ\s]+?)\,([AZ\s]+?)\,([AZ\s]+?)\,([\d\s]+?)$" Set ran = Range("A1:A3") For Each cel In ran Set mc = rex.Execute(CStr(cel.Value)) Set m = mc.Item(0) cel = m.SubMatches(0) cel.Offset(0, 1) = m.SubMatches(1) cel.Offset(0, 2) = m.SubMatches(2) cel.Offset(0, 3) = m.SubMatches(3) cel.Offset(0, 4) = m.SubMatches(4) Next cel 

这将把每个单元格的内容分割成列。