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

Google Sheets多条件聚合多行数据:取最大日期+求和方案求助

Google Sheets 多条件聚合多行数据解决方案

需求说明

按前两列非空组合分组,对指定列执行以下聚合操作:

  • 取组内第3列(起始日期)的最大值
  • 取组内第4列(结束日期)的最大值
  • 对第5、6、7列分别求和
  • 空值统一标识为""

输入数据(假设数据范围为A1:G5):

ABCDEFG
0abc16.10.202218.10.20221500079
425abc17.10.202219.10.202279915145
""abc17.10.202220.10.2022600034
588""01.10.202212.10.20228003015
588dca02.10.202208.10.2022300035

可行解决方案

使用ARRAYFORMULA+LET+MAXIFS/SUMIFS组合实现一次性聚合,避免FILTER/VLOOKUP/UNIQUE组合的匹配遗漏问题。

完整公式

=ARRAYFORMULA(
  LET(
    groups, UNIQUE(FILTER(A:B, A:A<>"", B:B<>"")),
    groupA, INDEX(groups,,1),
    groupB, INDEX(groups,,2),
    maxC, BYROW(groupB, LAMBDA(b, MAXIFS(C:C, B:B, b))),
    maxD, BYROW(groupB, LAMBDA(b, MAXIFS(D:D, B:B, b))),
    sumE, BYROW(groupB, LAMBDA(b, SUMIFS(E:E, B:B, b))),
    sumF, BYROW(groupB, LAMBDA(b, SUMIFS(F:F, B:B, b))),
    sumG, BYROW(groupB, LAMBDA(b, SUMIFS(G:G, B:B, b))),
    {groupA, groupB, maxC&"(max date 1)", maxD&"(max date 2)", sumE&"(sum1)", sumF&"(sum2)", sumG&"(sum3)"}
  )
)

公式逻辑拆解

  1. 获取有效分组键:UNIQUE(FILTER(A:B, A:A<>"", B:B<>"")) 提取所有A、B列均非空的唯一组合,作为聚合分组依据。
  2. 聚合计算:
    • MAXIFS:按分组的B列值,匹配所有对应行的日期列,取最大值。
    • SUMIFS:按分组的B列值,匹配所有对应行的数值列,求和。
  3. 结果格式化:将聚合结果与需求的后缀(如(max date 1))拼接,输出最终表格。

注意事项

  • 确保C、D列设置为日期格式,若为文本格式,需将MAXIFS中的C:C替换为TO_DATE(C:C),D:D替换为TO_DATE(D:D),保证日期比较准确。
  • 若分组逻辑需调整为仅A、B均非空的行参与聚合,只需将MAXIFS/SUMIFS的匹配条件改为A:A=groupA, B:B=groupB即可。

原方案问题分析

使用FILTER/VLOOKUP/UNIQUE组合时,VLOOKUP仅返回第一个匹配结果,无法处理多值聚合场景;同时FILTER的条件设置易遗漏空值行的匹配,最终导致数据丢失。

内容的提问来源于stack exchange,提问作者Darck Graf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:41:31