Google Sheets 如何修改公式实现C1-C4多单元格全部邮箱提取
谷歌表格多单元格批量提取邮箱修改方案
原公式问题说明
你当前使用的REGEXEXTRACT直接作用于多单元格范围时,默认仅返回第一个单元格的首个匹配结果,无法遍历所有单元格执行提取。
方案1:提取每个单元格的第一个邮箱,结果与原单元格行一一对应
使用BYROW函数遍历指定范围的每一行单元格,逐行执行提取,结果自动向下溢出:
=BYROW(test!C1:C4, LAMBDA(单元格, IFERROR(REGEXEXTRACT(单元格, "[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}"), "")))
仅需输入1次公式,即可自动返回C1到C4每行的第一个邮箱,无邮箱的行返回空值。
方案2:提取指定范围内所有单元格包含的全部邮箱,合并为一个列表
如果单个单元格内可能存在多个邮箱,需要把所有匹配到的邮箱全部提取出来按顺序排列,使用如下公式:
=IFERROR(SPLIT(REGEXREPLACE(TEXTJOIN(" ", TRUE, test!C1:C4), ".*?([A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4})|.+", "$1 "), " "), "")
公式会先把C1到C4的所有内容拼接,再过滤掉所有非邮箱字符,最后拆分得到所有邮箱的横向列表,如果需要纵向列表可以在外层加TRANSPOSE函数。
优化建议
你当前使用的正则表达式里[A-z]会匹配到部分特殊符号,可替换为[a-zA-Z]提升匹配准确性。
内容的提问来源于stack exchange,提问作者Agent Zebra
相关产品推荐
相关产品推荐

