我有一个我无法解决的简单问题(我对VBA并不擅长)。 我试图分离看起来像这样的数据:
[Buckley, Peter J.] Univ Leeds, Sch Business, Ctr Int Business, Leeds LS2 9JT, W Yorkshire,
England; [Hashai, Niron] Hebrew Univ Jerusalem, Jerusalem Sch Business Adm, IL-91905 Jerusalem, Israel
基本上 - 方括号内的作者(可能不止一个作者),然后是他/他们的隶属关系,然后是方括号内的第二位作者及其所属关系,等等(在某些情况下有10-15
位作者)。
我希望将每一行分开,以便我在一列中互相拥有,并在其旁边的列中加入。如果两个作者具有相同的隶属关系,则他们应该在不同的行中,并且他们的联盟会在每个作者旁边写下。
我真的很感谢你的帮助!
答案 0 :(得分:0)
您可以考虑使用Regex进行模式匹配。例如,如果您在单元格A1中有一个条目,如下所示:
[Buckley, Peter J.] Univ Leeds, Sch Business, Ctr Int Business, Leeds LS2 9JT, W Yorkshire, England;
将您对VBA项目的引用添加到:" Microsoft VBScript正则表达式5.5"
有关详细信息,请参阅此post。
此代码将提取作者并将其显示在消息框中:
Sub splitUpRegexPattern()
Dim regEx As New RegExp
Dim strPattern As String
Dim strInput As String
Dim strReplace As String
Dim Myrange As Range
Set Myrange = ActiveSheet.Range("A1")
For Each C In Myrange
strPattern = "(^\[)([a-zA-Z]*\,\s[a-zA-Z]*\s[a-zA-Z]\.?)(\])(.*)"
If strPattern <> "" Then
strInput = C.Value
strReplace = "$1"
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.test(strInput) Then
MsgBox ("Author: " & regEx.Replace(strInput, "$2"))
Else
MsgBox ("Not Matched")
End If
End If
Next
End Sub
结果: