如何使用ArrayFormula扩展查找最后匹配值的公式?
解决Google Sheets中数组化查找最后一个匹配值的问题
问题分析
你当前的公式=index(filter(A:A,B:B=F3),SUMPRODUCT(B:B=F3))能单独获取单个值(F3)对应的最后一个匹配项,但无法直接通过ArrayFormula扩展,核心原因是FILTER返回的是多值数组,而SUMPRODUCT生成的计数数组无法与INDEX形成一一对应的数组映射关系,导致整体无法批量处理F列的多个查询值。
可行解决方案
方案1:使用XLOOKUP(简洁高效)
XLOOKUP原生支持数组输入,且自带反向查找参数,直接就能批量返回每个查询值对应的最后一个匹配项:
=XLOOKUP(F3:F, B:B, A:A, "", 0, -1)
参数说明:
F3:F:批量查询的目标值范围B:B:匹配的数据源列A:A:需要返回结果的列"":无匹配时返回空值0:精确匹配-1:从后往前查找(即取最后一个匹配项)
方案2:使用ArrayFormula+INDEX+MATCH(兼容旧版Sheets)
如果需要基于ArrayFormula实现,可借助MATCH的经典“最后匹配项”查找逻辑:
=ArrayFormula(IF(F3:F="", "", INDEX(A:A, MATCH(2, 1/(B:B=F3:F), 0))))
逻辑说明:
1/(B:B=F3:F):生成数组,匹配位置为1,不匹配为#DIV/0!MATCH(2, ..., 0):在上述数组中查找“2”的位置(实际会定位到最后一个1的位置,因为数组中最大有效值为1)INDEX(A:A, ...):根据找到的行号返回A列对应值IF(F3:F="", "", ...):过滤F列的空单元格,避免返回错误值
原公式无法扩展的原因
原公式中FILTER(A:A,B:B=F3)针对单个查询值返回一个结果数组,SUMPRODUCT(B:B=F3)返回该查询值的匹配次数;但当套入ArrayFormula后,F3变为F3:F数组,FILTER会生成多个结果数组的集合,而SUMPRODUCT生成的计数数组无法与这些多值数组一一对应,导致INDEX无法正确解析,最终出现错误。
内容的提问来源于stack exchange,提问作者Skilz Work
相关产品推荐
相关产品推荐

