清除excel中的不良数据,按大写字母拆分单词

LVP*_*ker 5 regex macos excel vba

我在 Mac OSX 上使用 excel 2011。我有一个包含大约 3000 个条目的数据集。在包含名称的字段中,许多名称没有分开。名字和姓氏用空格分隔,但不同的名字会聚在一起。

这是我所拥有的,(一个单元格):

格兰特·莫里森
Sholly Fisch Ben Oliver卡洛斯·阿尔贝托·费尔南德斯
·厄巴诺
本·
奥利弗卡洛斯·阿尔贝托·费尔南德斯·厄巴诺本·奥利弗本·奥利弗

这是我想要完成的,(一个单元格,逗号后用一个空格分隔):

Grant Morrison, Sholly Fisch, Ben Oliver, Carlos Alberto, Fernandez Urbano, Ben Oliver, Carlos Alberto, Fernandez Urbano, Ben Oliver, Ben Oliver

我找到了一些 VBA 脚本,它们可以用大写字母分割单词,但是我尝试过的脚本会在我不需要的地方添加空格,就像这样...

Function splitbycaps(inputstr As String) As String

Dim i As Long
Dim temp As String

If inputstr = vbNullString Then
    splitbycaps = temp
    Exit Function
Else
    temp = inputstr
    For i = 1 To Len(temp)
        If Mid(temp, i, 1) = UCase(Mid(temp, i, 1)) Then
            If i <> 1 Then
                temp = Left(temp, i - 1) + " " + Right(temp, Len(temp) - i + 1)
                i = i + 1
            End If
        End If
    Next i
    splitbycaps = temp

End If
End Function
Run Code Online (Sandbox Code Playgroud)

我在这里找到了另一个使用 RegEx 的,(原谅我,我只是在学习所有这些,所以我可能听起来有点傻)但是当我尝试那个时,它根本不起作用,我的研究向我指出了一种添加对库的引用的方法,该库将添加必要的工具,以便我可以使用它。不幸的是,我一生都无法找到如何在我的 mac 版 excel 上添加对库的引用......我可能做错了什么,但这是我无法开始工作的答案.. .

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
Run Code Online (Sandbox Code Playgroud)

我在通过 VBA 通过 excel 添加自定义函数方面基本上是全新的,甚至可能有更好的方法来做到这一点,但似乎我得到的每个答案都没有完全正确地获取数据。感谢您提供任何答案!

bre*_*tdj 1

在 Excel 中的 Split Uppercase Words函数需要 udpdating 来匹配您的附加字符串。

您可以在单元格中使用此函数B1来显示文本,A1如下所示 在此输入图像描述

你的净化所做的一个假设是人们只有两个名字,所以

本·奥利弗卡洛斯·阿尔贝托

被打破到

本·奥利弗·
卡洛斯·阿尔贝托

这实际上应该发生吗?(如果是这样,需要稍作调整)

代码

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(.Replace(strIn, "$1, $2"), "<br>", ", ")
End With
End Function
Run Code Online (Sandbox Code Playgroud)