清理excel中的错误数据,用大写字母分割单词
我在Mac OSX上使用Excel 2011。 我有一个约3000条的数据集。 在包含名称的字段中,许多名称不会分开。 名字和姓氏之间用空格隔开,但是单独的名字是捆在一起的。
这就是我所拥有的(一个细胞):
格兰特MorrisonSholly Fisch
本·奥利弗·卡洛斯·阿尔贝托·费尔南德斯·厄本诺
本·奥利弗·卡洛斯·阿尔贝托·费尔南德斯·厄本诺
本·奥利弗
本·奥利弗
这是我想要完成的(一个单元格,逗号后用逗号隔开的逗号):
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
还有一个我在这里发现的使用RegEx(原谅我,我只是学习所有这一切,所以我可能听起来有点愚蠢),但是当我尝试一个,它根本不工作,我的研究指向我一种添加引用到库的方法,将添加必要的工具,所以我可以使用它。 不幸的是,在我的生活中,我无法find如何在我的Mac版本的Excel中添加对图书馆的引用…我可能做错了什么,但是这是我无法工作的答案。 。
Function SplitCaps(strIn As String) As String Dim objRegex As Object Set objRegex = CreateObject("vbscript.regexp") With objRegex .Global = True .Pattern = "([az])([AZ])" SplitCaps = .Replace(strIn, "$1 $2") End With End Function
我基本上是通过excel通过VBA添加自定义函数的新function,甚至可能有更好的方法来做到这一点,但似乎每一个答案,我只是没有得到正确的数据。 感谢您的任何答案!
我在Excel中分割大写字母的function需要使用udpdating来进行额外的string匹配。
你可以在B1
单元格中使用这个函数,如下所示
一个假设你的清洗确实是人只有两个名字,所以
本·奥利弗·卡洛斯·阿尔贝托
打破了
本·奥利弗
卡洛斯·阿尔贝托
那实际上是怎么回事? (如果需要稍微调整)
码
Function SplitCaps(strIn As String) As String Dim objRegex As Object Set objRegex = CreateObject("vbscript.regexp") With objRegex .Global = True .Pattern = "([az])([AZ])" SplitCaps = Replace(.Replace(strIn, "$1, $2"), "<br>", ", ") End With End Function