在Excel中使用VBA分割连续的大写字母

时间:2019-07-19 08:09:37

标签: regex excel vba

我有以下用于Excel的VBA代码,用于查找连续的大写字母并将其拆分。

Function SplitCaps(strIn As String) As String
Dim objRegex As Object
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
    .Global = True
    .Pattern = "([A-Z])([A-Z])"
    SplitCaps = .Replace(strIn, "$1 $2")
End With
End Function

该代码在以下情况下有效:

AB史密斯

AD Smith DC

输出:

  

A B史密斯

     

A D Smith DC

但是,当连续的字母超过2个时,vba将不起作用。 我尝试使用{2,3}量词,但是似乎无法进行以下工作:

SplitCaps = .Replace(strIn, "$1 $2 $3")

1 个答案:

答案 0 :(得分:1)

对于三个或更多连续的大写字母,匹配项确实重叠。补救措施是连续两次应用该模式:

With objRegex
    .Global = True
    .Pattern = "([A-Z])([A-Z])"
    SplitCaps = .Replace(strIn, "$1 $2")
    SplitCaps = .Replace(SplitCaps, "$1 $2")
End With