我有一个包含多个名字的列表,但是,有些名字有多个姓氏:例如。 “Eddie van Halen。我无法让我的代码输出:“van Halen,Eddie”,而是输出:“Van,Eddie”
有没有办法检查 names() 是否有超过 2 个部分,如果有,包括 names(1) & names(2) 作为姓氏,而不是检查“van”。也就是说,如果姓氏包含其他部分,例如“de”。
另外,如果全名没有多个部分,例如:“志愿者”,则代码应跳过此名称。
这是我当前的代码:
Sub Filter()
Dim r As Range
Dim c As Range
Dim names() As String
Dim lastrow As Long
lastrow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
With ActiveSheet
Set r = .Range("K3:K" & lastrow)
For Each c In r
names = Split(c.Value, " ")
If IsEmpty(c.Value) Then Exit Sub
ElseIf InStr(c.Value, "van") > 0 Then
c.Value = names(1) & names(2) & ", " & names(0)
Else
c.Value = names(1) & ", " & names(0)
End If
Next c
End With
End Sub
最佳答案
Split 接受第三个参数“Limit”,它可用于在结果包含那么多条目时停止拆分。
names = Split(c.Value, " ", 2)
在这种情况下
names
总是最多有 2 个元素。
关于excel - 将全名拆分为姓氏,如果姓氏有多个部分(即van,de),则为firstname,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56857103/