如何按月聚合后按A列值分组提取Google Sheets数据?
按姓名分组按月聚合Google Sheets数据解决方案
针对你需要在「Commission By Month」标签页自动统计按姓名分组的每月累计金额的需求,以下是适配原始表格布局(不可修改月份顺序)的解决方案:
核心公式
在「Commission By Month」标签页的A2单元格粘贴以下公式:
=ARRAYFORMULA( LET( data, 'Sales Data'!A2:Z, names, INDEX(data,,1), months, TEXT(COLUMN(INDEX(data,,2):INDEX(data,,COLUMNS(data)))-1,"mmmm yyyy"), month_order, COLUMN(INDEX(data,,2):INDEX(data,,COLUMNS(data))), flat_data, FLATTEN( IF( INDEX(data,,2):INDEX(data,,COLUMNS(data))<>"", names&"|"&month_order&"|"&months&"|"&INDEX(data,,2):INDEX(data,,COLUMNS(data)), "" ) ), QUERY( flat_data, "SELECT SPLIT(Col1, '|')[0], SPLIT(Col1, '|')[2], SUM(SPLIT(Col1, '|')[3]) WHERE Col1 <> '' GROUP BY SPLIT(Col1, '|')[0], SPLIT(Col1, '|')[1], SPLIT(Col1, '|')[2] ORDER BY SPLIT(Col1, '|')[0], SPLIT(Col1, '|')[1]", 0 ) ) )
公式说明
数据预处理:
- 用
LET定义变量简化逻辑,提取原始数据中的姓名、月份文本及对应列号(用于保留原始月份顺序) - 通过
FLATTEN+IF遍历所有月份列,将有效数据(非空金额)拼接为姓名|列号|月份|金额格式的字符串,空值直接跳过
- 用
分组聚合:
- 用
QUERY拆分拼接后的字符串,按「姓名+原始列号」分组,对金额求和 - 排序时优先按姓名,再按原始列号,严格遵循原始表格的月份顺序,满足你不能修改布局的要求
- 用
使用注意
- 粘贴公式前请清空「Commission By Month」标签页的现有演示数据
- 公式会自动同步原始数据的修改,无需手动更新
- 自动忽略金额为空的单元格,不会计入统计
内容的提问来源于stack exchange,提问作者T11-TJK
相关产品推荐
相关产品推荐

