Excel 公式将名称转换为统一格式

Excel 公式将名称转换为统一格式

我的情况是,我想编写一个方便的公式来帮助加快某些速度,其中之一就是将各种格式的名称转换为统一的格式。

这些名称可能看起来像以下三种情况之一:

Smith, John
Fry, Philip J
Green, Gregory (Greg)

我正在尝试编写一个公式,以便这三种情况如下所示:

John Smith
Philip Fry
Greg Green

我已经写了一些公式,但是我遇到了困难。到目前为止,我所拥有的是:

=IF(ISNUMBER(SEARCH("(",A7)),TEXTJOIN(" ",TRUE,MID(A7,SEARCH("(",A7)+1,SEARCH(")",A7)-SEARCH("(",A7)-1),LEFT(A7,FIND(",",A7,1)-1)),TEXTJOIN(" ",TRUE,"first",LEFT(A7,FIND(",",A7,1)-1)))

这有点乱,但这是我目前能得到的。这将给我以下结果:

first Smith
first Fry
Greg Green

因此,当某人没有括号中的昵称时,我有一个占位符用于获取名字。但是,我似乎无法想出公式的其余部分,以便获取逗号后的名字(以及由此产生的空格),但忽略中间名首字母之前的任何空格(如果存在)。

有人能帮我或者给我一些指点吗?谢谢!

答案1

它首先查找是否存在任何单词(),然后删除介于两者之间的所有内容,(然后创建一个伪 xml 语句,FILTERXML 首先将第二个名称再将第一个名称传递给 TEXTJOIN:

=TEXTJOIN(" ",TRUE,FILTERXML("<a><b>"&SUBSTITUTE(TRIM(LEFT(A1,FIND(",",A1)-1)& " " &MID(LEFT(A1,FIND(")",A1&")")-1),IFERROR(FIND("(",A1)+1,FIND(",",A1)+1),999))," ","</b><b>")&"</b></a>","//b["&{2,1}&"]"))

根据版本的不同,退出编辑模式时可能需要使用 Ctrl-Shift-enter 而不是 Enter。

在此处输入图片描述

答案2

我在数组公式方面遇到了一些问题,所以我继续使用替换函数完成公式,以检查姓名中有多少个空格。如果某人有多个姓氏,我通过仅检查姓和名之间逗号后的空格来解决这个问题。

可行的(并且非常丑陋的)公式是:

=IF(ISNUMBER(SEARCH("(",A1)),TEXTJOIN(" ",TRUE,MID(A1,SEARCH("(",A1)+1,SEARCH(")",A1)-SEARCH("(",A1)-1),LEFT(A1,FIND(",",A1,1)-1)),TEXTJOIN(" ",TRUE,IF(LEN(RIGHT(A1,LEN(A1)-FIND(",",A1)))-LEN(SUBSTITUTE(RIGHT(A1,LEN(A1)-FIND(",",A1))," ",""))=1,RIGHT(A1,LEN(A1)-FIND(",",A1)-1),LEFT(RIGHT(A1,LEN(A1)-FIND(",",A1)-1),FIND(" ",RIGHT(A1,LEN(A1)-FIND(",",A1)-2)))),LEFT(A1,FIND(",",A1,1)-1)))

相关内容