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

Google Sheets实现类子查询功能 按月计算单日最高托盘登记量

报错原因

你原公式报错的核心原因是Google Sheets的QUERY函数不支持在聚合函数内直接嵌套另一层聚合(max(sum(D))属于非法语法),QUERY本身支持嵌套子查询,以下是对应实现方案:

方案1:嵌套QUERY函数实现

先通过内层QUERY按日期分组统计每日总登记量,再通过外层QUERY按年月分组取单日登记量的最大值,完整公式如下(如果你的Google Sheets区域使用分号作为公式分隔符,把所有逗号替换为分号即可):

QUERY(
  QUERY(Days!A:E, "select A, sum(D) where A is not null group by A", 1),
  "select year(Col1), month(Col1)+1, max(Col2) group by year(Col1), month(Col1) label max(Col2) 'Max day'",
  1
)

说明:

  • 内层QUERY输出包含「日期、当日总登记量」两列的结果
  • 外层QUERY将日期拆分为年、月维度,按年月分组后取单日登记量的最大值,同时通过label参数将结果列命名为你需要的「Max day」
  • 公式返回结果自动包含年、月、Max day三列数据,避免跨年月份统计混淆

方案2:数据透视表实现

单数据透视表无法直接完成两层聚合计算,你可以通过两次透视表快速实现:

  • 第一次透视表:数据源选Days!A:E,行维度添加日期列(A列),值区域添加登记量列(D列),汇总方式选「求和」,得到所有日期对应的单日总登记量
  • 第二次透视表:数据源选第一次透视表的输出范围,行维度添加日期列,右键选择「创建日期分组」,勾选「年」「月」确认,值区域添加第一次透视表计算出的单日总登记量字段,汇总方式选「最大值」,将该字段自定义名称改为「Max day」即可

方案3:MAXIFS组合函数实现(更易维护)

如果不想使用嵌套QUERY,可以用数组函数一次性输出所有月份的Max day结果:

BYROW(
  SORT(UNIQUE(EOMONTH(Days!A2:A, 0))),
  LAMBDA(month_end, MAXIFS(Days!D:D, Days!A:A, ">="&EOMONTH(month_end, -1)+1, Days!A:A, "<="&month_end))
)

你也可以单独提取不重复的年月列后,逐行写MAXIFS公式计算对应月份的最高单日登记量,逻辑更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:27:03