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

如何使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:03:19