Google电子表格。单元格包含电子邮件地址

时间:2016-07-27 08:31:49

标签: excel email google-sheets

我有一个可能包含电子邮件地址,纯文本(不是电子邮件地址)或空的单元格。如果单元格包含一个电子邮件地址,我想将该单元格中的每个单元复制到不同的单元格,当它不包含电子邮件地址时,我想将该文本复制到另一个不同的单元格(不同的形式)电子邮件单元格和原始单元格)。如果它是空的我不想做任何事情。我怎么做到这一点?

It would look something like this

提前致谢。

2 个答案:

答案 0 :(得分:0)

此公式应位于B栏(电子邮件):

=IF(ISNUMBER(FIND("@";A1));A1;"")

这个公式应该在C列(文本)中:

=IF(ISNUMBER(FIND("@";A1));"";IF(A1<>"";A1;""))

基本上它会寻找一个@符号,如果有一个@它是一封电子邮件。
如果没有@,它将查看单元格并确保它不是空的 (注意我使用了C和D列,但这并没有改变任何东西。)

enter image description here

答案 1 :(得分:0)

您可以使用google工作表中的单个函数执行此操作 - 使用regexextract - 一个很好的事情是您可以只将一个函数放在一列中,您可以构造一个if语句,将非电子邮件推送到下一列就是这样:

=if(REGEXMATCH(A2,"\w+@\w+"),REGEXEXTRACT(A2,"\s?(.*@.*)\s?"),REGEXEXTRACT(A2,"(\s?)(.*)"))

要解释regexmatch - \w+表示任何单词或数字中的一个,后跟@个符号,另一个\w+这只是一个检查,以确保有一封电子邮件文本中某处的值 - 如果返回true则需要抓取电子邮件(实际上可以包含任何字符,因为我们更改为.*,这意味着任何字符都是0或更多。

Google表单使用了捕获组,因此在声明的else部分,我们告诉它在第一个单元格中放置空格或不放置任何内容,并通过环绕{{1}将非电子邮件文本推送到第二个单元格在我们的第二个捕获组中使用括号。

我知道这可能有点令人困惑,但它有效并且对正则表达式进行一些研究,你会发现它们非常有活力和有用 - 我每天都使用它们

enter image description here

此外,这只适用于谷歌表 - 不是优秀 - 但因为你有标签......