0

我目前正在使用查找/替换来缩短大型 Excel 工作表。我正在查找诸如“, Inc.”、“, Co.”之类的词的所有实例。“ LLC”等并用任何内容替换它们(也就是删除它们)。我遇到的问题是我无法对“ Inc”、“, Inc”、“, Co”等进行类似的搜索并删除它们,因为它也会删除它们的开头,例如“, Inc” orporated, 和 ", Co" 公司。

是否有一个空白字符或我可以在 VBA 中做的事情,这将允许我在我找到的内容之后查找/替换没有任何内容的项目(即找到“,Co”而不捕获“,Co”)?

4

1 回答 1

2

在 VBA 中,您可以使用正则表达式来确保在您尝试删除的缩写之前和之后存在“单词边界”。您还可以删除可能出现的无关空格,具体取决于原始字符串。

Function remAbbrevs(S As String, ParamArray abbrevs()) As String
    Dim RE As Object
    Dim sPat As String

sPat = "\s*\b(?:" & Join(abbrevs, "|") & ")\b\.?"
Set RE = CreateObject("vbscript.regexp")
With RE
    .Global = True
    .ignorecase = False
    .Pattern = sPat
    remAbbrevs = .Replace(S, "")
End With

End Function

对于此函数的参数,您可以输入一系列缩写。该函数创建一个适当的正则表达式来使用。

例如在下面,我输入:

=remAbbrevs(A1,"Inc","Corp")

并填写:

在此处输入图像描述

正则表达式的解释:

remAbbrevs

\s*\b(?:Inc|Corp)\b\.?

选项:区分大小写

使用RegexBuddy创建

于 2020-07-20T01:32:46.353 回答