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))))
逻辑说明:
ARRAYFORMULA(IF(D2:D="English", ROW(D2:D)-ROW(D2)+1, 0)):遍历D列,匹配"English"时返回该行在D2:D区域的相对行号,不匹配则返回0。MAX(...):取最大的相对行号,即最后一个匹配行的位置。INDEX(E2:BL, ...):提取对应行的E到BL列内容。
方案3:使用LOOKUP函数
利用LOOKUP忽略错误值的特性,定位最后一个匹配项:
=LOOKUP(2, 1/(D2:D="English"), E2:BL)
逻辑说明:
1/(D2:D="English"):匹配"English"的单元格返回1,不匹配返回#DIV/0!错误。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
相关产品推荐
相关产品推荐

