从单元格中提取最后一个子字符串

Shy*_*thy 31 excel excel-2007 worksheet-function

我在列中有名字.我需要将该列中的姓氏拆分为另一列.

姓氏由右侧的空格分隔.

单元格中的内容A2 = Alistair Stevens和我在单元格中输入公式B2(我需要'Stevens'在单元格中B2)

我尝试使用以下公式:

=RIGHT(A2,FIND(" ",A2,1)-1)

=RIGHT(A2,FIND(" ",A2))
Run Code Online (Sandbox Code Playgroud)

这两个公式都适用于这个单元格但是当我将其填充/复制并粘贴到下面的单元格时,它不起作用.我得到错误的价值!!

A3 -> David Mckenzie

B3 -> Mckenzie
Run Code Online (Sandbox Code Playgroud)

Jea*_*ett 51

这有效,即使有中间名称:

=MID(A2,FIND(CHAR(1),SUBSTITUTE(A2," ",CHAR(1),LEN(A2)-LEN(SUBSTITUTE(A2," ",""))))+1,LEN(A2))
Run Code Online (Sandbox Code Playgroud)

如果你想要一切但是姓氏,请查看这个答案.

如果名称中有尾随空格,则可能需要通过替换上述公式中的所有A2by 实例来删除它们TRIM(A2).

请注意,只有纯粹的机会,你的第一个公式才=RIGHT(A2,FIND(" ",A2,1)-1)适合Alistair Stevens.这是因为"Alistair"并且" Stevens"碰巧包含相同数量的字符(如果计算前导空格" Stevens").


chr*_*sen 5

@Jean 提供的答案提供了一个有效但晦涩的解决方案(尽管它不处理尾随空格)

作为替代方案,请考虑使用 vba 用户定义函数 (UDF)

Function RightWord(r As Range) As Variant
    Dim s As String
    s = Trim(r.Value)
    RightWord = Mid(s, InStrRev(s, " ") + 1)
End Function
Run Code Online (Sandbox Code Playgroud)

在工作表中用作
=RightWord(A2)

  • 晦涩,嗯?当 Excel 允许在公式中添加注释时给我打电话。 (7认同)