【问题标题】:extract email from column从列中提取电子邮件
【发布时间】:2021-12-23 06:14:22
【问题描述】:

尝试使用以下公式从 Excel 工作表的列中提取电子邮件:

=TRIM(MID(SUBSTITUTE(" "&$A1&" "," ",REPT(" ",40)),
 FIND(REPT("@",COLUMNS($A1:A1)),SUBSTITUTE
 (SUBSTITUTE(" "&$A1&" "," ",REPT(" ",40)),"@",REPT("@",COLUMNS($A1:A1)),COLUMNS($A1:A1)))-40,80)) 

该公式在大部分情况下都有效,但某些记录仍包含其他文本。

例如,其中一条记录如下所示:

**TEST** John Beasley,jbeasley@usa.com,7575551212

使用上面的公式后,我得到以下结果:

Beasley,jbeasley@usa.com,7575551212

这是另一个例子:

USA-USA/J Beasley/jbeasley@usa.com/757-555-1212

使用公式后的结果:

Beasley/jbeasley@usa.com/757-555-1212

以下是公式何时起作用的示例(之前):

**US AMA TES DATA** John Beasley, jbeasley@usa.com

这会产生以下结果:

jbeasley@usa.com

所以公式有效,但也无效。

如何编写公式以便提取除实际电子邮件地址之外的所有内容?

【问题讨论】:

  • 如果您可以访问LAMBDA() 功能,您可以查看here,在那里您会找到一个通用的“split”函数以及Scott 提供的xpath 表达式.如果您不知道具体的分隔符,只需将所有字符都塞进去,您可以看到它们的子字符串。

标签: excel excel-formula formula trim


【解决方案1】:

如果有,请使用 FILTERXML:

=FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1,"/",","),",","</s><s>")&"</s></t>","//s[contains(.,'@')]")

FILTERXML 是在 Excel 2013 中引入的,仅在 PC 而非 Mac 上引入。

如果没有 FILTERXML 那么我们可以使用:

=TRIM(MID(SUBSTITUTE(SUBSTITUTE(A1,"/",","),",",REPT(" ",999)),FIND("@",SUBSTITUTE(SUBSTITUTE(A1,"/",","),",",REPT(" ",999)))-500,999))

【讨论】:

  • 测试........
  • 不走运...我得到了完全相同的数据和文本。
  • @JohnBeasley 那么您的数据中有一些与您发布的内容不同的东西。如您所见,我发布的两个公式都经过测试并返回正确的值。
  • @JohnBeasley,我猜, 不是真正的,,而是其他一些看起来像, 的字符
  • 文字可以是随机的。我试图提供几个例子,但有很多。您提供的第二个功能效果更好,但它排除了其他功能。似乎我可能需要运行几个函数才能让它工作。
猜你喜欢
  • 1970-01-01
  • 2016-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多