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

如何汇总Google Sheets中某值最后3次出现的行数据?

问题需求

我有一个从A:BL区域扩展的表格(仅按行增长),需要查找D列中“English”的最后3次出现,并对对应E:BL区域的这3行数据进行汇总,返回一行汇总结果。

简化数据集

语言《玫瑰》《白鲸记》《远大前程》《手枪》
English312
English32
English1122
French32
English322

需要汇总的目标行

这是D列中“English”的最后3次出现对应的行:

语言《玫瑰》《白鲸记》《远大前程》《手枪》
English32
English1122
English322

期望汇总结果

语言《玫瑰》《白鲸记》《远大前程》《手枪》
English7146

之前尝试的公式无效:=XLOOKUP(SEQUENCE(3), ROW(D2:D), INDEX(FILTER(E2:BL, D2:D="English"), ), , -1)


解决方案

以下是无需脚本的Google Sheets公式方案:

方案1:简洁的BYCOL+FILTER+TAKE组合

={"English"; BYCOL(FILTER(E:BL, D:D="English"), LAMBDA(col, SUM(TAKE(col, -3))))}
  • 逻辑:先用FILTER(E:BL, D:D="English")提取所有D列为“English”对应的数值区域;再用BYCOL遍历每一列,对每一列执行SUM(TAKE(col, -3)),即取该列最后3个值求和;最后用数组常量{"English"; ...}添加第一列的“English”标签。

方案2:QUERY嵌套实现

=QUERY(
  QUERY(FILTER(A:BL, D:D="English"), "select * offset "&(COUNTIF(D:D,"English")-3)),
  "select Col1, sum(Col2), sum(Col3), sum(Col4), sum(Col5) 
   label sum(Col2)'《玫瑰》', sum(Col3)'《白鲸记》', sum(Col4)'《远大前程》', sum(Col5)'《手枪》'"
)
  • 逻辑:
    1. 内层QUERY:先过滤出所有D列为“English”的行,再用offset "&(COUNTIF(D:D,"English")-3)"跳过前面的行,仅保留最后3行;
    2. 外层QUERY:对保留的3行按列求和,并设置对应列的标签,匹配原表格表头。

方案3:SUM+INDEX组合(适合固定列数场景)

={
  "English",
  SUM(INDEX(FILTER(E:BL,D:D="English"),COUNTIF(D:D,"English")-2,1):INDEX(FILTER(E:BL,D:D="English"),COUNTIF(D:D,"English"),1)),
  SUM(INDEX(FILTER(E:BL,D:D="English"),COUNTIF(D:D,"English")-2,2):INDEX(FILTER(E:BL,D:D="English"),COUNTIF(D:D,"English"),2)),
  SUM(INDEX(FILTER(E:BL,D:D="English"),COUNTIF(D:D,"English")-2,3):INDEX(FILTER(E:BL,D:D="English"),COUNTIF(D:D,"English"),3)),
  SUM(INDEX(FILTER(E:BL,D:D="English"),COUNTIF(D:D,"English")-2,4):INDEX(FILTER(E:BL,D:D="English"),COUNTIF(D:D,"English"),4))
}
  • 逻辑:通过FILTER提取目标区域,用INDEX定位每一列最后3行的起始和结束位置,再用SUM求和,最后组合成完整的汇总行。

内容的提问来源于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 04:19:53