ArrayFormula、RegexExtract 和加入 Google 表格

克雷森

我有一个数据集,其中填充了电子邮件。我想列出在每个单元格的电子邮件中提取的所有姓氏,并将全部加入一个单个单元格,但我想为每个单元格获得的电子邮件添加分隔符或分隔符。

这是数据集:

这是提取的公式

=ARRAYFORMULA(
 PROPER(
  REGEXEXTRACT( 
   A:A, 
   REGEXREPLACE(
    A:A,
    "(\w+)@","($1)@"
   )
  )
 )
)

这最初产生 ff:

C D
史密斯 美国能源部
史密斯

我想JOIN()在里面使用ARRAYFORMULA()但它不像我认为的那样工作,因为它输出一个错误,它只接受一行或一列数据。我最初的理解ARRAYFORMULA()是它遍历数据的过程,所以我认为它会JOIN()首先,然后移动到下一个元素/行,但我想它不会那样工作。我可以使用,FLATTEN()但我想在行元素之间有分隔符或分隔符。我需要帮助来获得我预期的最终结果,如下所示:

UPDATE:
Smith
Doe

CLOSE:
Smith

所有这些都位于一个单元格 C1 中。UPDATE 和 CLOSE 来自 B 列。 编辑:我想澄清 A 列中的电子邮件条目是动态的,可能不止两个。

阿雷斯维克

我认为这会奏效:

=arrayformula(flatten(if(A2:A<>"",regexreplace(trim(split(B2:B&":"&char(9999)&regexreplace(Proper(A2:A),"@[\w\.]+,\ ?|@.*",char(9999)&" "),char(9999))),".*\.",),)))

在此处输入图片说明

笔记:

Proper(A2:A) 改变大写。

The regexreplace "@[\w\.]+,\ ?|@.*" finds:

@ symbol...

then any number of A-Z, a-z, 0-9, _ [using \w] or . [using \.]

then a comma

then 'optionally' a space \ [the optional bit is ?]

or [using |], the @ symbol then an number of characters [using .*]

The result is replaced with a character that you won't expect to have in your text - char(9999) which is a pencil icon, and a trailing space (used later on when the flatten keeps a gap between lines). The purpose is to get all of the 'name.surname' and 'nameonly' values in front of any @ symbol and separate them with char(9999).

在此处输入图片说明

然后在 regexreplace 前面的是B2:B&":"&char(9999)&从 B 列、:chanracter 和char(9999).

在此处输入图片说明

split()然后函数将其分成列。Trim()用于去除不包含..

在此处输入图片说明

下一个regexreplace()函数删除之前的任何内容,包括.保留姓氏或名称而不带..

在此处输入图片说明

if(A2:A<>""列 A 中有值唯一处理行。arrayformula()需要函数将公式级联到工作表中。

我没有在单个单元格中输出结果,但看起来您已经使用 textjoin 对其进行了排序。

这是我将结果放入单个单元格的版本。

=arrayformula(textjoin(char(10),1,if(A2:A<>"",REGEXREPLACE(B2:B&":"&char(10)&regexreplace(Proper(A2:A),"@[\w\.]+,\ ?|@.*",char(10)),".*\.",),)))

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章