我在 excel 中有一个字段(列),格式为“LastName,FirstName MiddleInitial”,在姓氏和名字之后的逗号之间有一个空格,在中间名和名字之间有第二个空格(后面没有逗号名)。有没有办法确定哪些单元格的右侧有中间首字母,然后消除所有单元格的中间首字母,使输出看起来像“姓氏,名字”?
谢谢!
我在 excel 中有一个字段(列),格式为“LastName,FirstName MiddleInitial”,在姓氏和名字之后的逗号之间有一个空格,在中间名和名字之间有第二个空格(后面没有逗号名)。有没有办法确定哪些单元格的右侧有中间首字母,然后消除所有单元格的中间首字母,使输出看起来像“姓氏,名字”?
谢谢!
您想要做的是能够将字段解析为多个字段,然后使用简单的 excel 公式重新加入。要获取一个字段并将其放入多个列中,您可以对“文本到列”使用以下方法
拥有 3 列文本后,您可以在您希望获得值的列中使用 =A1&"、"&B1 等公式将前两列组合在一起。(在我的示例中,姓氏在 A1 中,名字在 B1 中)
您也可以在不更改原始数据的情况下将其作为单元格公式进行。我使用如何在 MS-Excel 中基于“:”拆分字符串?,在超级用户。假设你在 a1 中有一个名字(Public, John Q):
=LEFT(A1,FIND(" ",A1)) & LEFT(MID(A1,FIND(" ",A1)+1,LEN(A1)),IFERROR(FIND(" ",MID(A1,FIND(" ",A1)+1,LEN(A1)))-1,LEN(MID(A1,FIND(" ",A1)+1,LEN(A1)))))
它看起来很复杂,但实际上并非如此:
使用这两个组件:
LEFT(A1,FIND(" ",A1))
MID(A1,FIND(" ",A1)+1,LEN(A1)))
我们可以抓住这些碎片:
获取姓氏:LEFT(A1,FIND(",",A1)+1)
获取名字和中间名:MID(A1,FIND(" ",A1)+1,LEN(A1)))
然后通过将“空格的左侧”结构放在“字符串的右侧”结构周围进行递归:
中(左(A1,查找(“,”,A1)+1),查找(“”,左(A1,查找(“,”,A1)+1))+1,LEN(左(A1,查找( ",",A1)+1) )))
除非没有第二个空格(当没有中间名时)。这就是 Iferror 的用途 - 在这种情况下,您需要在第一个空格之后得到的整个长度:
LEFT(MID(A1,FIND(" ",A1)+1,LEN(A1)),IFERROR(FIND(" ",MID(A1,FIND(" ",A1)+1,LEN(A1)))-1,LEN(MID(A1,FIND(" ",A1)+1,LEN(A1)))))
将它们放在一起lastname, firstname
:
=LEFT(A1,FIND(" ",A1)) & LEFT(MID(A1,FIND(" ",A1)+1,LEN(A1)),IFERROR(FIND(" ",MID(A1,FIND(" ",A1)+1,LEN(A1)))-1,LEN(MID(A1,FIND(" ",A1)+1,LEN(A1)))))