清除excel中的错误数据,用大写字母拆分单词

时间:2016-11-09 00:24:48

标签: regex excel macos vba excel-vba

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

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

  

Grant MorrisonSholly Fisch
Ben OliverCarlos Alberto Fernandez Urbano
Ben OliverCarlos Alberto Fernandez Urbano
Ben Oliver
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

我在这里找到另一个使用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添加自定义功能基本上是全新的,甚至可能有更好的方法来做到这一点,但似乎我所得到的每个答案都没有完全正确地获得数据。谢谢你的回答!

1 个答案:

答案 0 :(得分:1)

来自Split Uppercase words in Excel的我的函数需要udpdating来进行额外的字符串匹配。

您可以在inpsearch = ('%'+self.lineEdit.text()+'%',) c.execute('INSERT INTO search SELECT * FROM clientsformula WHERE Name= {0} OR Surname= {0}', inpsearch) 的单元格B1中使用此功能,如下所示 enter image description here

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

  

Ben OliverCarlos Alberto

被打破

  

Ben Oliver
  卡洛斯·阿尔贝托

实际上会发生什么? (如果是这样,需要进行小调整)

A1