1

我正在处理一个大型 Excel 文件,其中包含与我的公司合作的企业的大量信息。我刚刚导入了另一个大的 excel 文件,它们的格式有所不同。我们已经拥有的较大文件在单独的列中包含地址、州和邮政编码,每列间隔两个,如下所示:

在此处输入图像描述

我没有制作这个电子表格,否则我不会像那样放置列,但这就是使用它的女士喜欢它的方式。

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

纽约州特洛尔维尔 12345

因为 99% 的新状态都是相同的状态,所以我已经遍历了这些状态,快速查找和替换所有状态都有效。我现在只剩下这个了

巨魔镇 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

我需要添加什么?如果有更简单的方法可以做到这一点,我也愿意接受替代方法。

提前感谢您的建议

4

1 回答 1

2

Can you use the in-built Excel Worksheet Functions?

Place this in target column =RIGHT(A2,5) would capture the rightmost 5 characters of your string iff they are numeric. This will work if all of your values data values have a 5-digit zip codes at the end.

Alternatively, you could wrap it with a conditional such as IF(ISNUMBER(VALUE(RIGHT(A2,5))),RIGHT(A2,5),""), whcih would add a layer of validation to the process.

Also, did you know there is an option that may do this for you automatically if your data is comma (or space) delimited Data ribbon->Text to columns

于 2013-02-25T20:44:40.770 回答