当 len 改变时拆分单元格

splitting cells when len changes

我有一个现有的公式,可以非常有效地从我们得到的报告中去除字面上的废话,并给我这个名字。我想知道我是否可以将其提升到一个新的水平,现在从该公式的结果中去掉姓氏,然后将其放在前面。 IE,使用我的名字你会得到 Gerald W Maxwell。我想要 Maxwell,Gerald W(不是标点符号)。

这是报告中的一个名称示例,以及公式:

Name Example:  Chat Operator Performance by Operator by Day for 1234567_1234567890_Gerald W_Maxwell

Formula:  =IFERROR(IF(RIGHT($B1,6)="EXEMPT",LEFT(SUBSTITUTE(RIGHT($B1,LEN($B1)-68),"_"," "),LEN(SUBSTITUTE(RIGHT($B1,LEN($B1)-68),"_"," "))-7),SUBSTITUTE(RIGHT($B1,LEN($B1)-68),"_"," ")),"DELETE")

所以,如果您将该公式放在单元格 A1 中,您将得到 Gerald W Maxwell。太棒了,我想知道我们是否可以根据这个把姓氏放在前面。

在我post这个之前,让我先分解一下公式的作用。它的核心是 RIGHT($B1,LEN($B1)-68) 并且这从绒毛中剥离了原始名称。然后用替代函数将其包装起来,以去除名称中的任何下划线。下一个包装器是一个 If 语句,用于查找单词 "EXEMPT"(因为创建此报告的人认为这将是一个不错的功能......),最后,用弓完成包装......一个 IFERROR给你一个很好的声明 "DELETE"。这样我就可以 运行 一个宏来从数据 table.

中删除我不需要的行

最让我难过的是,我有的人有名字和姓氏,有的人有名字、中间名和姓氏,还有一些特殊的人有名字、中间名、姓氏和姓氏。

如果无法完成,我可以将其编码为对列执行文本并在另一侧重新连接,但如果我可以将其放入单行公式中,我可以节省自己的时间编码的麻烦。

此答案基于为获取 this answer 中的字符串中最右边的字符而设计的公式:

=right(A1,len(A1) - FIND("@",SUBSTITUTE(A1," ","@",(LEN(A1)-LEN(SUBSTITUTE(A1," ","")))/LEN(" "))))&" "&left(A1,FIND("@",SUBSTITUTE(A1," ","@",(LEN(A1)-LEN(SUBSTITUTE(A1," ","")))/LEN(" "))))

如果您的名字在 A1 中,请将其输入 A2,您将获得 Maxwell Gerald W。这不包括像 Jr. 或多个姓氏这样的例外情况。它只是在最后一个空白 space 之后切掉最后一位并将其重新附加到字符串的前面。