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

Google Sheets公式返回首个匹配行而非最后一行的调整方法

解决Google Sheets查找最后匹配行并返回对应列内容的问题

问题分析

你当前的公式错误在于误用了MATCH函数的参数:MATCH("English", D2:D, MATCH(2, 1/(D2:D="English"))) 里的第三个参数应为匹配类型(0/1/-1),而非位置值,导致公式返回首个匹配行。以下是几种正确的实现方案:

方案1:使用XLOOKUP(推荐,简洁高效)

XLOOKUP支持反向查找,直接从下往上定位最后一个匹配项:

=XLOOKUP("English", D2:D, E2:BL, , , -1)

参数说明:

  • 最后一个参数-1表示反向查找,即从数据区域底部开始搜索第一个匹配的"English",对应最后一次出现的行。

方案2:使用INDEX+MAX+数组判断

通过数组公式定位最后一个匹配行的相对位置,再用INDEX提取内容:

=INDEX(E2:BL, MAX(ARRAYFORMULA(IF(D2:D="English", ROW(D2:D)-ROW(D2)+1, 0))))

逻辑说明:

  1. ARRAYFORMULA(IF(D2:D="English", ROW(D2:D)-ROW(D2)+1, 0)):遍历D列,匹配"English"时返回该行在D2:D区域的相对行号,不匹配则返回0。
  2. MAX(...):取最大的相对行号,即最后一个匹配行的位置。
  3. INDEX(E2:BL, ...):提取对应行的E到BL列内容。

方案3:使用LOOKUP函数

利用LOOKUP忽略错误值的特性,定位最后一个匹配项:

=LOOKUP(2, 1/(D2:D="English"), E2:BL)

逻辑说明:

  1. 1/(D2:D="English"):匹配"English"的单元格返回1,不匹配返回#DIV/0!错误。
  2. LOOKUP(2, ...):LOOKUP会跳过错误值,找到最后一个1对应的E2:BL区域内容。

修正你原公式的写法

如果想保留原公式的结构,只需调整错误的参数位置,直接用MATCH(2, 1/(D2:D="English"))作为INDEX的行参数:

=INDEX(E2:BL, MATCH(2, 1/(D2:D="English")))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:33:14