2016-11-09 46 views
4

我在Mac OSX上使用excel 2011。我有一個包含約3000個條目的數據集。在包含名稱的字段中,許多名稱不分隔。名字和姓氏之間用空格分隔,但是單獨的名字聚集在一起。在excel中清理不良數據,按大寫字母拆分單詞

這裏是我的,(一個單元):

格蘭特MorrisonSholly甘草
本OliverCarlos阿爾韋託·費爾南德斯烏爾巴諾
本OliverCarlos阿爾韋託·費爾南德斯烏爾巴諾
本·奧利弗
本·奧利弗

這裏是我的想要完成,(一格,逗號後用逗號隔開):

格蘭特·莫里森,Sholly甘草,本·奧利弗,卡洛斯·阿爾貝託·費爾南德斯烏爾巴諾,本·奧利弗,卡洛斯·阿爾貝託·費爾南德斯烏爾巴諾,本·奧利弗,本·奧利弗

我已經找到了一些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 

還有另外一個,我發現這裏所使用的正則表達式,(原諒我,我我只是學習所有這些,所以我可能聽起來有點愚蠢),但是當我嘗試那個時,它根本不起作用,而且我的研究指出了一種添加對庫的引用的方法,所以我可以使用它的輔助工具。不幸的是,在我的生活中,我無法找到如何在我的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添加自定義的功能,甚至有可能是一個更好的辦法做到這一點,但它似乎是每一個答案,那我來只是沒有完全得到數據正確。感謝任何答案!

+0

這第一功能會爲你工作與編輯的一點點。我猜測你說什麼時候在不需要的位置增加空格必須與前一個字符是空格的名稱以及
部分相關。您可以簡單地添加另一個If語句或添加到現有的語句中,以捕捉這些字符並使其按您打算的方式執行。 – Tyeler

+0

我進來的是,你幾乎已經在那裏,只是多一點,你已經得到它 – Tyeler

+0

你總是有名字和姓氏的組合嗎?我問的是如果你總是有一串字符串,即使沒有被格式化爲你正在顯示的例子(對不起,但我不知道如何在評論中加粗) – RCaetano

回答

1

我的功能從Split Uppercase words in Excel需要udpdating您的額外的字符串匹配。

你會在A1如下 enter image description here

一個假設你的洗臉確實讓的人只有兩個名字使用此功能在細胞B1文本,所以

本OliverCarlos阿爾貝託

分解爲

本·奧利弗
卡洛斯·阿爾伯託

是實際會發生什麼?(如果是的話需要一個小調整)

代碼

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 
+1

我不認爲'vbscript.regexp 'lib在MacOSX上可用,否則這是更好,更靈活的解決方案。 – AutomatedChaos

+0

@AutomatedChaos我的壞 - 從上次看到我的解決方案,錯過了Mac OSX參考。 – brettdj

+0

謝謝,夥計們。試過這個功能,它只返回#VALUE!我假設這是一個正則表達式的OSX問題,如果有的話,是否有解決方法?某種補丁或你知道的一些東西? – LVPoker

相關問題