我有一个数据集,其中填充了电子邮件。我想列出在每个单元格的电子邮件中提取的所有姓氏,并将全部加入一个单个单元格,但我想为每个单元格获得的电子邮件添加分隔符或分隔符。
这是数据集:
一种 | 乙 |
---|---|
[email protected], [email protected] | 更新 |
[email protected] | 关闭 |
这是提取的公式
=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)®exreplace(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)®exreplace(Proper(A2:A),"@[\w\.]+,\ ?|@.*",char(10)),".*\.",),)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句