新 Outlook (Office 365) 中用户名和邮件地址的分隔 Excel 公式

Separation of user names and mail address in new Outlook (Office 365) by Excel formula

我在使用新版 Outlook (Office 365) 时遇到问题,他们通过删除我之前用于将邮件地址与用户分开的 <> 字符来“改善用户体验”名字.

我从 Outlook 复制了所有地址,粘贴到邮件正文中,单击用段落标记替换 ; <,这给了我一个列,我将其复制到 Excel column A.我在 B column 中有一个公式 =IFERROR(MID($A2;FIND("<";$A2)+1;LEN(A2)-FIND("<";$A2));A2),结果,即仅清除邮件地址,我可以出于各种目的检查我们的内部数据库。

现在我无法使用这些括号 - 我可以定位 search/find 公式来找到句号 . 字符;我也知道地址从它左边的第一个 space 开始,但由于我们员工的疯狂多样性,它可能是左边第二个、第三个或第四个 space。

示例地址可以是Woodward, Robert Paul robert.woodward@ourcompany.com,或Myname, Petr petr.myname@ourcompany.com,或Xyz, Roxana Denise Ariela roxana.xyz@ourcomany.com。我不确定我是否应该尝试以某种方式更改 Outlook 设置,以便它再次开始显示括号(尝试但未能找到),或者是否有一个公式在 [=17 的左侧寻找第一个 space =]. =find() 公式是从左往右看的(除非我改变写作方向),所以经过多年的经验,我一无所知,但希望不是我一个人遇到同样的问题。

一个非常普遍的想法是在特定字符上“拆分”一个字符串(space 在你的例子中)。您可以使用:

B1中的公式:

=FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[last()]")
  • "<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>" - 这会创建一个有效的 XML 字符串。
  • FILTERXML() 的帮助下,我们可以使用给定的有效 XPATH 表达式分析这个 XML 字符串:"//s[last()]",意思是:return最后一个节点.

有关 FILTERXML() 的更多信息以及它用于在任何给定字符上“拆分”字符串,请参阅 较早的 post。

作为替代方案,您可以使用以下公式-

=TRIM(RIGHT(SUBSTITUTE(A1," ", REPT(" ",200)),200))

好吧,我暂时解决了这个问题,虽然很笨拙,把这个公式放到B列中。

"=MID(A2;FIND(" ";A2)+1;LEN(A2)-FIND(" ";A2)+1)"(EN 设置需要用逗号替换分号),并将相同的公式复制到 C、D 和 E 列,直到我在整个列中得到所有结果无空格(我那里有 150 行)。

因为当找不到更多空格时会产生 "#VALUE!" 错误,所以我将错误处理放在那里:"=IFERROR(IFERROR(MID(D2;FIND(" ";D2)+1;LEN(D2)-FIND(" ";D2)+1);D2);C2)",它将公式重定向到下一个左边的非错误结果. (我什至可以用实际的 D2 和 C2 公式替换 D2 和 C2,并且可以将它们全部放在一列中,但考虑到文本公式通常是为了快速需要而完成的,并且创建起来应该更快比起手工一条一条的处理记录,简直称不上“优雅”)。

我可以考虑创建一个 UDF 函数来检查从右到左方向的空格,但这不值得。