0

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

谢谢!

4

2 回答 2

1

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

文本到列

拥有 3 列文本后,您可以在您希望获得值的列中使用 =A1&"、"&B1 等公式将前两列组合在一起。(在我的示例中,姓氏在 A1 中,名字在 B1 中)

于 2014-11-10T21:51:53.767 回答
1

您也可以在不更改原始数据的情况下将其作为单元格公式进行。我使用如何在 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)))))
于 2014-11-10T22:45:42.170 回答