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

如何用ARRAYFORMULA+VLOOKUP返回匹配指定Program Key的所有值?

Google Sheets 批量匹配返回所有匹配值的解决方法

你原来用=ARRAYFORMULA(VLOOKUP(dts_program_key,{'CMT Upload'!AF2:AF,'CMT Upload'!A2:A},2,0))只能得到单个结果,是因为VLOOKUP本身只会返回第一个匹配项,哪怕套了ARRAYFORMULA也没法改变这个特性。要返回所有匹配值且无空行间隔,试试下面几个实用方法:

方法1:用FILTER函数(最简单直接)

FILTER是专门用来筛选符合条件数据的函数,自动剔除空行,公式如下:

=FILTER('CMT Upload'!A2:A, 'CMT Upload'!AF2:AF = dts_program_key)
  • 第一个参数'CMT Upload'!A2:A:指定要返回的目标列(Contract Lane Key所在的A列)
  • 第二个参数'CMT Upload'!AF2:AF = dts_program_key:设置筛选条件,匹配AF列中等于dts_program_key的行

输入后直接返回所有符合条件的结果,没有空行。

方法2:用QUERY函数(适合复杂筛选场景)

QUERY支持类SQL语句,灵活性更高,公式如下:

=QUERY('CMT Upload'!A2:AF, "SELECT A WHERE AF = '"&dts_program_key&"'", 0)
  • "SELECT A WHERE AF = '"&dts_program_key&"':SQL逻辑,选择A列中AF列等于目标key的行,注意字符串类型的key需要用单引号包裹
  • 最后一个参数0:表示数据区域没有表头,直接返回结果

如果后续需要加更多筛选条件,直接修改QUERY里的语句就行。

方法3:用INDEX+SMALL组合(兼容旧版或特定需求)

如果需要结合ARRAYFORMULA使用,或者适配一些特殊场景,可以用这个组合公式:

=ARRAYFORMULA(IFERROR(INDEX('CMT Upload'!A2:A, SMALL(IF('CMT Upload'!AF2:AF = dts_program_key, ROW('CMT Upload'!AF2:AF)-ROW('CMT Upload'!AF2)+1), ROWS(A$2:A2)))))
  • IF('CMT Upload'!AF2:AF = dts_program_key, ...):找出所有符合条件的行号
  • SMALL(..., ROWS(A$2:A2)):按顺序提取符合条件的行号
  • INDEX(...):根据行号返回A列对应的值
  • IFERROR:处理超出匹配数量的情况,避免显示错误值

输入公式后下拉,或者直接用ARRAYFORMULA自动填充所有结果。

内容的提问来源于stack exchange,提问作者rod.hoda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 12:15:35