excel - 将全名拆分为姓氏,如果姓氏有多个部分(即van,de),则为firstname

标签 excel vba

我有一个包含多个名字的列表,但是,有些名字有多个姓氏:例如。 “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/

相关文章:

java - Apachie POI 中的 FormulaEvaluator 仅返回空值

python - 使用 python 中的 openpyxl 更新行和列

image - 在VBA中获取图像大小?

javascript - 从 JavaScript 表单访问搜索结果的 VBA 网络抓取工具

excel - 类型不匹配 : Range Formula

python - 从受密码保护的 Excel 文件到 pandas DataFrame

java - 如何比较两个Excel表格

vba - 丢失的 quines : Visual Basic (for Applications)

c++ - 如何将 excel 范围传递给需要双指针的 C++ 函数

vba - 通过宏导入 CSV 时日期格式不一致