从一行挑出电子邮件

时间:2014-01-16 12:41:57

标签: excel excel-2013

我有超过100k行,类似于:

Joe | 123 | email@domain.com 
Bob | 456
Ben | 567 | Denver | email@email.com

电子邮件可能位于该行的任何点/单元格中,而某些单元格中包含@。

我怎样才能得到以下输出:

Joe | email@domain.com 
Bob | 
Ben | email@email.com

或者只是将电子邮件地址标记到行尾,然后隐藏其他列?

我尝试了各种各样的点点滴滴,但是我的速度很快。

2 个答案:

答案 0 :(得分:2)

现在我知道你可以在每一栏中都有它,在A栏左边添加一列。在你的例子中,你有B1 =“Joe”等。

然后将此公式放在A1:

=IFERROR(OFFSET(A1,0,SUM(IFERROR(IF(FIND("@",$B1:$O1)>0,1,0),0)*COLUMN($B1:$O1))-1),"")

根据您的需要调整范围$ B1:$ O1。我建议你尽量让它尽可能紧,因为数组公式是资源密集型的。

========================

如果电子邮件地址始终位于给定行的最后一列,并且如果该行中没有任何空格直到最后一个值,您可以这样做:

首先,在A栏左边添加一列。在你的例子中,你有B1 =“Joe”等。

然后,将此公式放在单元格A1

=OFFSET(A1,0,COUNTA($B1:$XFD1))

并将其拖放到所有行上。 (我正在使用Excel 2010,因此在上面的公式中使用XFD。根据需要进行调整,只需确保使用覆盖数据集最大列数的范围)

答案 1 :(得分:1)

真的很有趣。 使用@和字体样式粗体格式化名称和其他全部替换所有@的名称。复制到Word,全选,查找内容:*,字体不粗体,使用通配符,并替换为空。复制回Excel并转到Special,Blanks。右键单击其中一个选择并删除...,向左移动单元格。