excel正则expression式macros来匹配邮政编码,并将其向右移动四列

我正在处理一个大的excel文件,这个文件有很多关于我公司的业务的信息。 我刚刚导入了另一个大型的Excel文件,它们的格式有所不同。 我们已经拥有的更大的文件在地址,状态和邮政编码分开的列中,每个都有两个空格,如下所示:

在这里输入图像说明

我没有制作这个电子表格,否则我不会把这样的列,但是这是如何与她一起工作的女士喜欢它。

问题是,我导入的工作表中有城市,州和邮政信息都在同一个单元格中,如下所示:

Trollville,NY 12345

我已经在美国各地了,因为99%的新国家都是快速查找和replace的所有状态。 我现在离开这个

Trollville 12345

我想把这个邮政编码四列移到正确的单元格中。 我写了一个基本的正则expression式,但不知道excel-vba多less,因为我已经多年没有使用它了,但这是我想出来的。 我只是不知道如何告诉vba打印输出匹配(我做成一个数组)到适当的列。 这是我迄今为止:

Function findZipCode(zipCode) Dim regEx As New VBScript_RegExp_55.RegExp Dim matches, s regEx.Pattern = "\s\d{5}\W" regEx.Global = True s = "" If regEx.Test(zipCode) Then Set matches = regEx.Execute(zipCode) For Each Match In matches s = s & Match.Value Next findZipCode = s Else findZipCode = "" End If End Function 

我需要添加什么? 如果有一个更简单的方法来做到这一点,我也接受其他方法。

在此先感谢您的build议

你可以使用内置的Excel工作表函数吗?

把它放在目标列=RIGHT(A2,5)将捕获你的string的最右边的5个字符,如果他们是数字。 如果您的所有数值数据的最后都有一个5位数的邮政编码,这将起作用。

或者,你可以用一个条件如IF(ISNUMBER(VALUE(RIGHT(A2,5))),RIGHT(A2,5),"")来包装它,这样会为stream程添加一层validation。

另外,你知道有一个选项可以为你自动做这个,如果你的数据是逗号(或空格)分隔Data ribbon->Text to columns