从Excel字段parsing出姓和名
我在excel中有一个字段(列),格式为“LastName,FirstName MiddleInitial”,在姓氏和名字之间留有一个空格,中间名和名字之间有一个空格(没有逗号名字)。 有没有一种方法来确定哪些单元格在右侧有一个中间初始值,然后消除所有单元格的中间初始值,以便输出看起来像“LastName,FirstName”?
谢谢!
你想要做的就是能够将字段parsing成多个字段,然后用一个简单的Excel公式重新join。 要将一个字段放入多个列中,可以使用以下方法来处理“Text to Columns”
文本到列
一旦你有3列的文字,你可以通过使用像公式= A1&“,”&B1在你想要的值列中的前两个。 (在我的例子中,姓氏将在A1中,并且在B1中名字)
您也可以将其作为单元格公式,而无需更改原始数据。 我使用了如何在MS-Excel中基于“:”分割string的模型来构build它? ,在超级用户。 假设你在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)))))
它看起来非常复杂,但实际上不是:
使用这两个组件:
- 将所有内容都放在string中第一个空格的左侧:
LEFT(A1,FIND(" ",A1))
-
MID(A1,FIND(" ",A1)+1,LEN(A1)))
所有内容都放在string中第一个空格的右侧
我们可以抓住这些碎片:
-
获取姓氏:
LEFT(A1,FIND(",",A1)+1)
-
获取名字和中间名:
MID(A1,FIND(" ",A1)+1,LEN(A1)))
然后把“左边的空间”build筑放在“右边的”build筑周围,
MID( LEFT(A1,FIND(“,”,A1)+1) ,FIND(“”, LEFT(A1,FIND(“,”,A1)+1) )+ 1,LEN “,”,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)))))