gpt4 book ai didi

regex - 清理excel中的坏数据,按大写字母分割单词

转载 作者:行者123 更新时间:2023-12-02 11:52:53 27 4
gpt4 key购买 nike

我在 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

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

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需要 udpdating 来匹配您的附加字符串。

您可以在单元格 B1 中使用此函数来处理 A1 中的文本,如下所示 enter image description here

你的清理确实做出的一个假设是人们只有两个名字,所以

Ben OliverCarlos Alberto

被破坏为

Ben Oliver
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

关于regex - 清理excel中的坏数据,按大写字母分割单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40498628/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com