Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 谷歌电子表格。当单元格包含电子邮件地址时,请执行某些操作_Excel_Email_Google Sheets - Fatal编程技术网

Excel 谷歌电子表格。当单元格包含电子邮件地址时,请执行某些操作

Excel 谷歌电子表格。当单元格包含电子邮件地址时,请执行某些操作,excel,email,google-sheets,Excel,Email,Google Sheets,我有一个单元格,可以包含电子邮件地址、纯文本(不是电子邮件地址)或是空的。如果单元格中包含电子邮件地址,我希望将该单元格中的所有内容复制到不同的单元格中,如果单元格中不包含电子邮件地址,我希望将该文本复制到另一个不同的单元格中(电子邮件单元格和原始单元格都是不同的形式)。如果是空的,我什么都不想做。我将如何实现这一点 提前感谢。此公式应位于B列(电子邮件): 该公式应位于C列(文本): =IF(ISNUMBER(FIND(“@”A1));“”;IF(A1“”;A1;“”) 基本上,它会寻找一

我有一个单元格,可以包含电子邮件地址、纯文本(不是电子邮件地址)或是空的。如果单元格中包含电子邮件地址,我希望将该单元格中的所有内容复制到不同的单元格中,如果单元格中不包含电子邮件地址,我希望将该文本复制到另一个不同的单元格中(电子邮件单元格和原始单元格都是不同的形式)。如果是空的,我什么都不想做。我将如何实现这一点


提前感谢。

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

该公式应位于C列(文本):

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


您可以使用google sheets中的单个函数(使用regexextract)实现这一点。有趣的是,您可以将单个函数放在一列中,您可以构造一个if语句,在这种情况下将非电子邮件推送到下一列:

=if(REGEXMATCH(A2,"\w+@\w+"),REGEXEXTRACT(A2,"\s?(.*@.*)\s?"),REGEXEXTRACT(A2,"(\s?)(.*)"))
要解释regexmatch-
\w+
表示任何单词或数字中后跟
@
符号和另一个
\w+
符号的一个或多个,这只是一个检查,以确保文本中的某个位置有电子邮件值-如果返回true,则它将捕获电子邮件(实际上可以有任何字符,因为我们改为
*
,这意味着任何字符中的0个或更多

Google sheets使用捕获组,因此在语句的
else
部分,我们告诉它在第一个单元格中加空格或不加空格,然后在第二个捕获组中用括号将非电子邮件文本括起来

我知道这可能有点让人困惑,但它是有效的,通过对正则表达式的一点研究,你会发现它们是非常动态和有用的——我每天都在使用它们


此外,这只适用于谷歌工作表-不适用于excel-但由于您有标签…

嗨!谢谢这是我一直在寻找的。我可以问您“\s?”的作用吗?如果我想翻转单元格(因此单元格“is email”在collum C中,“not email”在colum B中)我必须对表达式做些什么?我想我不明白如何将非电子邮件推送到下一个单元格。工作表将每个
捕获组
分隔到它自己的单元格-因此双括号创建了两个捕获组-如果要交换它们,只需将if语句部分交换到
=if(NOT)(REGEXMATCH(A2,“\w+@\w+”),REGEXEXTRACT(A2,”(\s?(.*)”),REGEXEXTRACT(A2,“\s?(..*.)\s?”)
\s
表示空格,问号表示可能有空格,但也可能没有空格
=IF(ISNUMBER(FIND("@";A1));"";IF(A1<>"";A1;""))
=if(REGEXMATCH(A2,"\w+@\w+"),REGEXEXTRACT(A2,"\s?(.*@.*)\s?"),REGEXEXTRACT(A2,"(\s?)(.*)"))