我在Mac OSX上使用的是Excel 2011。我有大约3000个条目的数据集。在包含名称的字段中,许多名称没有分开。名字和姓氏之间用空格隔开,但分开的名字被捆在一起。

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


格兰特·莫里森(Grant Morrison)肖利·费希(Bolly Oliver)本·奥利弗(Carlos Alberto Fernandez Urbano)本·奥利弗(Carlos Alberto Fernandez UrbanoBen Oliver)


这是我要完成的操作(一个单元格,逗号后用逗号隔开):


格兰特·莫里森(Grant Morrison),肖利·费斯(Sholly Fisch),本·奥利弗(Ben Oliver),卡洛斯·阿尔贝托(Carlos Alberto),费尔南德斯·厄巴诺(Fernandez Urbano),本·奥利弗(Carlos Alberto),费尔南德斯·厄巴诺(Fernandez Urbano),本·奥利弗(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


我在这里发现了另一个使用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


我基本上是崭新的,可以通过excel通过VBA添加自定义功能,甚至可能有更好的方法来执行此操作,但是似乎我得出的每个答案都不能完全正确地获得数据。感谢您的任何答案!

最佳答案

我来自Split Uppercase words in Excel的函数需要udpdd才能进行其他字符串匹配。

您可以在单元格B1中将此功能用于A1中的文本,如下所示
regex - 清除Excel中的错误数据,用大写字母拆分单词-LMLPHP

您的清洗所做的一个假设是人们只有两个名字,所以


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


被打破


本奥利佛
卡洛斯·阿尔贝托(Carlos Alberto)


那实际上应该发生什么? (如果需要的话,请稍作调整)



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

08-27 06:45