如何用ARRAYFORMULA结合SUMIFS实现谷歌表格动态数据汇总?
Google Sheets 动态汇总表:ARRAYFORMULA + SUMIFS 日期匹配问题解决
问题场景
基于StockSoldDetails原始数据表生成动态汇总表:
- 行日期标题从
AgentWorkDays标签页动态获取 - 列产品ID标题从
Products标签页动态获取
手动使用SUMIFS可实现单格数据计算(如C2单元格计算对应日期B2+产品ID C1的销量总和),但嵌套ARRAYFORMULA后,仅能复用B2日期的计算结果,无法匹配各行日期生成对应值,核心问题是混合引用(如C$1)无法被ARRAYFORMULA自动迭代列方向数组。
解决方案
方法1:用BYROW + BYCOL 实现二维矩阵计算
在汇总表起始单元格(如B2)输入以下公式:
=BYROW(AgentWorkDays!A:A, LAMBDA(row_date, BYCOL(Products!A:A, LAMBDA(col_product, SUMIFS(StockSoldDetails!C:C, StockSoldDetails!A:A, row_date, StockSoldDetails!B:B, col_product) )) ))
BYROW遍历AgentWorkDays的每一行日期BYCOL遍历Products的每一列产品ID- 嵌套的
SUMIFS自动匹配当前行日期与当前列产品ID,生成完整汇总矩阵
方法2:用ARRAYFORMULA + 转置数组实现匹配
若坚持使用ARRAYFORMULA,需将列标题转换为数组以避免混合引用限制:
=ARRAYFORMULA( IFERROR( SUMIFS( StockSoldDetails!C:C, StockSoldDetails!A:A, AgentWorkDays!A:A, StockSoldDetails!B:B, TRANSPOSE(Products!A:A) ) ) )
TRANSPOSE(Products!A:A)将产品ID列转成行数组,与日期列形成二维匹配关系ARRAYFORMULA自动迭代每一组「日期+产品ID」组合,计算对应销量总和IFERROR用于处理空白行/列的错误显示
优化提示
- 建议使用具体数据范围(如
AgentWorkDays!A2:A100)替代整列引用,提升公式计算性能 - 若销量列存储为文本格式,需用
VALUE(StockSoldDetails!C:C)转换后再求和
内容的提问来源于stack exchange,提问作者user544849
相关产品推荐
相关产品推荐

