Google Sheets 如何在唯一日期列表前自动插入指定产品按月汇总行
解决方案
你之前用DAY(UNIQUE())=1的逻辑失效,核心原因是如果对应月份1号没有数据,UNIQUE返回的结果中不会包含1号的日期,自然无法触发汇总行插入。我们采用「月度汇总行+每日明细行合并后排序」的方案实现需求,完全适配欧洲版Google Sheets的语法规则,且支持数据新增时自动更新。
完整动态公式
将以下公式直接粘贴到TAB2工作表的A2单元格即可,会自动溢出所有行的日期、数值两列数据,原有你编写的UNIQUE、SUMIF公式可全部删除:
=SORT({UNIQUE(EOMONTH(FILTER('TAB1'!A2:A;'TAB1'!A2:A<>"";);0))\ARRAYFORMULA(SUMIF(EOMONTH('TAB1'!A2:A;0)&'TAB1'!C2:C;UNIQUE(EOMONTH(FILTER('TAB1'!A2:A;'TAB1'!A2:A<>"";);0))&"1";'TAB1'!B2:B))\SEQUENCE(ROWS(UNIQUE(EOMONTH(FILTER('TAB1'!A2:A;'TAB1'!A2:A<>"";);0)));1;0;0);UNIQUE(FILTER('TAB1'!A2:A;'TAB1'!A2:A<>"";))\ARRAYFORMULA(SUMIF('TAB1'!A2:A&'TAB1'!C2:C;UNIQUE(FILTER('TAB1'!A2:A;'TAB1'!A2:A<>"";))&"1";'TAB1'!B2:B))\SEQUENCE(ROWS(UNIQUE(FILTER('TAB1'!A2:A;'TAB1'!A2:A<>"";)));1;1;0)};1;TRUE;3;TRUE)
核心逻辑说明
- 构造了一个3列的临时数组:第一列存日期(月度汇总行存对应月份的月末日期,每日明细行存实际日期),第二列存对应汇总值,第三列存排序标记(汇总行标记为0,明细行标记为1)
- 按第一列日期升序、第三列标记升序排序,同月份的汇总行就会自动排在当月所有明细行的最上方
- 公式动态引用TAB1全量数据,TAB1新增数据后会自动重算,新的日期行将自动插入到对应月份汇总行下方、同月份已有日期的上方,无需手动调整
日期显示配置
要实现汇总行显示「月份全称+年份」、明细行显示原有DD.MM.YYYY格式,选中TAB2的A列,点击顶部菜单「格式 > 数字 > 自定义数字格式」,输入以下规则后保存即可:[=EOMONTH(@;0)]"mmmm yyyy";DD.MM.YYYY
自定义调整规则
- 如需统计其他Product-ID的数值,将公式中两处的
"1"修改为对应ID即可 - 如需修改汇总行的排序规则,调整SORT函数的最后两个参数即可
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

