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

谷歌表格:匹配Name和Date双条件批量获取对应ID

谷歌表格多条件匹配并返回全部结果的解决方案

原公式问题分析

你的公式未生效且只能返回首个匹配,原因有两点:

  • 语法错误:$A$2:$A" "&$B$2:$B 中缺少字符串连接符 &,正确写法应为 $A$2:$A&" "&$B$2:$B;
  • 函数限制:VLOOKUP 本身仅能返回符合条件的第一个匹配结果,无法输出全部匹配项。

解决方案

根据需求不同,提供两种常用实现方式:

方式1:同一单元格合并显示所有匹配ID

在「Lookup」工作表的C2单元格输入以下公式,自动向下填充所有行,将匹配的ID用逗号分隔显示:

=ArrayFormula(IF($A$2:$A="",,TEXTJOIN(", ", TRUE, FILTER('To be fetched'!$D$2:$D, 'To be fetched'!$A$2:$A=$A$2:$A, 'To be fetched'!$C$2:$C=$B$2:$B))))

逻辑说明:

  • FILTER:从「To be fetched」中筛选出与当前行Name(A列)、Date(B列)同时匹配的ID;
  • TEXTJOIN:将筛选出的多个ID合并为单个字符串,用逗号分隔;
  • ArrayFormula:批量处理整列数据,无需手动下拉;
  • IF:跳过空行避免错误显示。

方式2:每个匹配ID单独占一行(溢出显示)

如果需要将每个匹配的ID单独显示在一行(同一Name+Date的结果自动向下溢出),使用 BYROW 结合 FILTER:

=BYROW($A$2:$B, LAMBDA(row, IF(INDEX(row, 1)="",, FILTER('To be fetched'!$D:$D, 'To be fetched'!$A:$A=INDEX(row, 1), 'To be fetched'!$C:$C=INDEX(row, 2)))))

逻辑说明:

  • BYROW:逐行处理「Lookup」的A、B列数据;
  • LAMBDA:定义每行的处理规则,用INDEX提取当前行的Name和Date;
  • FILTER:返回所有符合条件的ID,自动溢出到下方单元格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:20:33