从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)))))