我正在使用一个大型excel文件,其中包含有关我公司合作的业务的大量信息。我刚刚导入了另一个大的excel文件,它们的格式不同。我们已经拥有的较大文件的地址,状态和邮政编码在不同的列中,每列间隔两个,如下所示:
我没有制作这个电子表格,否则我就不会把这样的列放在那里,但那就是那个使用它的女士喜欢它。
问题是我导入的工作表中的城市,州和邮政信息都在同一个单元格中,如下所示:
Trollville,NY 12345
我已经超过州,因为99%的新州都是相同的州,快速查找和替换所有工作。我现在离开了这个
Trollville 12345
我想将右边四列的邮政编码移到正确的单元格中。我写了一个基本的正则表达式,但对excel-vba不太了解,因为我多年没有使用它,但这就是我想出来的。我只是不知道如何告诉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
我需要添加什么?如果有更简单的方法,我也会接受替代方法。
提前感谢您的建议
答案 0 :(得分:2)
您可以使用内置的Excel工作表函数吗?
将其放在目标列中=RIGHT(A2,5)
将捕获字符串中最右边的5个字符,如果它们是数字的话。如果您的所有值数据值最后都有一个5位数的邮政编码,则此方法将有效。
或者,你可以用IF(ISNUMBER(VALUE(RIGHT(A2,5))),RIGHT(A2,5),"")
之类的条件包装它,whcih会为进程添加一层验证。
此外,如果您的数据以逗号(或空格)分隔Data ribbon->Text to columns