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

Google Sheets:基于指定名称返回对应列最后两个最新值的问题

解决Google Sheets提取特定名称对应列最后两个最新值的问题

嘿,我明白你的需求了——要在Google Sheets里针对特定名称,从对应列只提取最后两个最新的记录,而不是所有匹配项对吧?你之前用的ARRAYFORMULA+TEXTJOIN会把所有符合条件的值都列出来,所以得调整公式来筛选出最新的两条。

下面给你两种可行的解决方案,根据你的Sheet版本选就行:

方案1:用TAKE+SORT+FILTER(新版Google Sheets推荐)

这个方案逻辑清晰,适合支持TAKE函数的新版Sheet:

=TEXTJOIN(" ,", TRUE, TAKE(SORT(FILTER(F2:F, A2:A="Alamosa"), ROW(FILTER(F2:F, A2:A="Alamosa")), FALSE), 2))

公式拆解:

  • FILTER(F2:F, A2:A="Alamosa"):先筛选出A列等于目标名称的所有F列值
  • SORT(..., ROW(...), FALSE):把筛选结果按行号倒序排列(默认下方的行是最新记录,所以倒序后最新的在最前面)
  • TAKE(..., 2):只取排序后的前2个值
  • TEXTJOIN(" ,", TRUE, ...):把这两个值用逗号加空格合并起来

如果想做成动态的(比如在C1单元格输入要搜索的名称,公式自动匹配),可以改成:

=TEXTJOIN(" ,", TRUE, TAKE(SORT(FILTER(F2:F, A2:A=C1), ROW(FILTER(F2:F, A2:A=C1)), FALSE), 2))

方案2:用INDEX+LARGE(兼容旧版Google Sheets)

如果你的Sheet不支持TAKE函数,用这个方案:

=TEXTJOIN(" ,", TRUE, INDEX(F2:F, LARGE(ROW(A2:A)*(A2:A="Alamosa"), {1,2})))

公式拆解:

  • ROW(A2:A)*(A2:A="Alamosa"):给匹配目标名称的行标记行号,不匹配的行返回0
  • LARGE(..., {1,2}):找出匹配行里最大的两个行号(也就是最新的两条记录所在的行)
  • INDEX(F2:F, ...):根据行号提取对应的F列值
  • TEXTJOIN:同样合并两个值

这两个方案都能自动处理“匹配记录不足2条”的情况——如果只有1条记录,就只会返回那1条,不会出错。

内容的提问来源于stack exchange,提问作者David Macias Mata

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:24:13