使用ARRAYFORMULA与QUERY跨键范围匹配提取全部对应值的公式问题
公式问题说明
你写的公式无法批量返回结果的核心原因是:QUERY 不支持数组化的条件遍历。你在查询语句中拼接整列范围 A1:A 时,QUERY只会读取A1单元格的值生成单次查询条件,不会逐行读取A列每个单元格的键分别执行查询,因此仅能返回第一行的匹配结果,后续行无输出。
额外提醒:如果你需要的是精确匹配Type字段,不建议用contains关键词,避免出现部分字符匹配的误判(比如存在foodtest类型时也会被contains 'food'匹配到)。
可用解决方案
在B1单元格写入以下公式即可实现预期效果:
如果Range1是已命名的表格:
=BYROW(A1:A,LAMBDA(key,IF(key="",,TRANSPOSE(FILTER(Range1[Desc],Range1[Type]=key)))))
如果Range1是普通单元格范围:
=BYROW(A1:A,LAMBDA(key,IF(key="",,TRANSPOSE(FILTER(INDEX(Range1,,2),INDEX(Range1,,1)=key)))))
公式逻辑:
- 用
BYROW遍历A列每一行的值,逐个传入LAMBDA作为查询键key - 每次查询用
FILTER筛选Range1中Type和当前key匹配的所有Desc值 - 转置为行格式输出,空行自动跳过不输出内容
内容的提问来源于stack exchange,提问作者faye
相关产品推荐
相关产品推荐

