从单元格中删除文本

从单元格中删除文本

我有一个包含超过 54000 个名称的广告摘录,通常采用这种格式(示例数据):

Barnes, Bob B [WST]  
Santiago, Francis AB [AT]  
Chandler, Ronald  
Jefferson,  Katherine T [NT]  
Forrest,  Stan S  [WST]  
El Guerrero,  Annette BMD [AT]  
Lopez,  Todd TA  [CNT]  
Jackson, Lincoln F [NT]  
Nunez, Mattie Joey LC [WST]  
Moran,  David DA [AT]  
Gowan, Darryl V  
Hansen,  Rick AF  [NT]  
Lowe,  Denise DR  [WST]  
Butler,  Doug D  [AT]  
Kim, Erika  

不幸的是,这种格式在整个数据中并不一致。有时,没有 MI,或者可能有最多 3 个 MI。此外,[RGN] 并不总是存在。更糟糕的是,有相当多的名字中也有空格(例如 Da Vinci)。

我需要清理这些名字,以便它们读作:
LastName,FirstName

我尝试使用 LEFT、RIGHT 和文本转列函数,但收效甚微。到目前为止,最好的结果是使用空格分隔的文本转列方法,然后使用 (a1&" "&b1) 将它们连接起来。这只适用于一半的名称,目前,我计划继续连接单元格 (a1&b1&c1 等),然后手动检查名称以确保它们正确。我祈祷并希望有人能拯救我和我的眼睛,让我不要这样做,并有一个想法让我尝试。

答案1

我用RegEx 查找/替换插件具有启用正则表达式的工作表功能。

这样您就可以轻松删除 MI 和 RGN:

=RegExReplace(A1," [A-Z ]*(\[.*)*","",-1)

  1. 寻找模式" [A-Z ]*(\[.*)*"

    • 匹配名称后的空格
    • [A-Z ]*可选匹配首字母
    • (\[.*)*可选匹配区域
  2. 将其替换为无""
  3. 只替换最后一次出现的内容-1

在此处输入图片描述

答案2

使用正则表达式或类似的东西将该字符串拆分为三部分。LastName、FirstName、extra。

您可能可以使用相同的功能将额外内容拆分为 MI 和 RGN,假设您有一个简短的 RGN(区域?)列表。

使用逗号作为分隔符将姓氏从前面拉出来很容易。查找带有空格的名字可能更难。但是,假设有 3 个中间名的首字母是单个,则可以查找第一个单个字符作为第一个中间名首字母。在此之前的所有内容都是名字。

无论你做什么,都要分阶段进行。把姓氏去掉,因为这很容易。其余的是 FirstName MI [RGN]。如果在有地区的地方有括号,那么这也很容易。去掉那些。

这样就剩下 FirstName MI。我会从右到左进行操作。如果最后一个字符是空格,则删除它。如果它是一个字符,并且它左边的字符是空格,那么它就是首字母。将其拉出并添加到 MI 目标字段的前面。重复操作,直到出现多字符字符串。这是 FirstName 的结尾。恭喜,您已完成全部拆分。

另一个问题:您能否返回 AD 并重新导出并获取各个字段而不是显示名称?(powershell,Get-ADUser ...)重新组合显示名称比执行我刚才列出的操作要容易得多。

相关内容