从Excel字段解析出名字和姓氏

从Excel字段解析出名字和姓氏,excel,format,excel-formula,data-cleaning,Excel,Format,Excel Formula,Data Cleaning,我在excel中有一个“LastName,FirstName MiddleInitial”格式的字段(列),在姓氏和名字后面的逗号之间有一个空格,在中间的首字母和名字之间有一个空格(名字后面没有逗号)。有没有一种方法可以识别哪些单元格的右侧有中间首字母,然后消除所有单元格的中间首字母,使输出看起来像“LastName,FirstName” 谢谢 您要做的是能够将字段解析为多个字段,然后使用简单的excel公式重新连接。要获取一个字段并将其放入多列中,可以使用以下“文本到列”的方法 一旦有了3列

我在excel中有一个“LastName,FirstName MiddleInitial”格式的字段(列),在姓氏和名字后面的逗号之间有一个空格,在中间的首字母和名字之间有一个空格(名字后面没有逗号)。有没有一种方法可以识别哪些单元格的右侧有中间首字母,然后消除所有单元格的中间首字母,使输出看起来像“LastName,FirstName”


谢谢

您要做的是能够将字段解析为多个字段,然后使用简单的excel公式重新连接。要获取一个字段并将其放入多列中,可以使用以下“文本到列”的方法


一旦有了3列文本,就可以在想要获得值的列中使用类似于=A1&“,”&B1的公式将前两列文本分组在一起。(在我的示例中,姓氏在A1中,名字在B1中)

您也可以将其作为单元格公式来执行,而不必更改原始数据。我用超级用户上的模型建立了这个模型。 假设您在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 1(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,FIND(“,”,A1)+1),FIND(“,左(A1,FIND(“,”,A1)+1))+1,LEN(左(A1,FIND(“,”,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
将它们放在一起作为
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 1(A1()))

谢谢!工作得很有魅力。