You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

谷歌表格使用ArrayFormula实现按邮箱匹配应用的数组公式求解

谷歌工作表逐邮箱匹配应用的自动数组公式方案
  • 单格公式无法直接套ArrayFormula的核心原因是FILTER、JOIN不支持批量迭代数组输入,需搭配BYROW函数实现逐行自动计算。
  • 将以下公式粘贴到Sheet2的B2单元格即可,无需手动下拉,A列后续新增的唯一邮箱会自动生成对应计算结果:
=BYROW(A2:A,LAMBDA(each,IF(each="","",IFERROR(REGEXMATCH(JOIN(",",FILTER(Sheet1!$B$2:$B,Sheet1!$A$2:$A=each)),$C$1),""))))

公式说明

  • BYROW(A2:A,LAMBDA(each,...)) 遍历A列第二行起的所有单元格,逐行将单元格值传入each变量处理
  • 内置空值判断IF(each="","",...),避免A列空白行返回无效错误
  • 核心匹配逻辑和你原有单格公式完全一致,仅将固定引用的$A2替换为逐行动态传入的each变量

可选优化方案

匹配成功返回合并后的应用字符串

如果需要匹配到内容后返回逗号分隔的应用列表而非布尔值TRUE/FALSE,使用以下版本:

=BYROW(A2:A,LAMBDA(each,IF(each="","",IFERROR(LET(merged,JOIN(",",FILTER(Sheet1!$B$2:$B,Sheet1!$A$2:$A=each)),IF(REGEXMATCH(merged,$C$1),merged,"")),""))))

普通文本模糊匹配(规避正则特殊字符问题)

如果C1内容包含./*+?等正则特殊字符,不需要正则规则匹配,仅需要普通文本模糊搜索,使用以下版本:

=BYROW(A2:A,LAMBDA(each,IF(each="","",IFERROR(LET(merged,JOIN(",",FILTER(Sheet1!$B$2:$B,Sheet1!$A$2:$A=each)),IF(ISNUMBER(SEARCH($C$1,merged)),merged,"")),""))))

内容的提问来源于stack exchange,提问作者rawat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 20:24:03