Google表格合并重复项目行并对指定数值列求和的方法
Google Sheets跨表合并后去重+指定列求和实现方案
方案1:单QUERY公式一步实现(无冗余步骤,推荐)
你不需要先合并全量数据再做去重处理,直接改造原有QUERY公式,通过分组聚合一步完成跨表合并、重复行合并、数值列求和三个操作。
首先先明确列属性:把所有字段分为两类,一类是「非数值判断字段」(项目名称、项目负责人、所属部门、项目状态、启动时间这类重复行内容完全一致、不需要做计算的文本/日期字段),另一类是「需求和数值字段」(总耗时、投入成本、投入人天这类需要累加统计的数字字段)。
公式模板如下,你可以根据自己的实际列位置调整参数:
=QUERY( {'Sheet1'!A2:I1000;'Sheet2'!A2:I1000}, "select Col1,Col2,Col3,Col4,sum(Col5),sum(Col6),sum(Col7),sum(Col8),sum(Col9) where Col1 <> '' group by Col1,Col2,Col3,Col4 label sum(Col5)'项目阶段',sum(Col6)'参与人数',sum(Col7)'总耗时',sum(Col8)'投入成本',sum(Col9)'完成率'", 1 )
参数说明:
- 两个源表统一从A2行开始取数,跳过各自的表头行,避免表头被当成数据参与计算;公式最后一个参数填
1,会自动生成和原表顺序一致的表头,不需要手动补 select后面先列所有非数值判断字段的列序号(Colx,x是列从左到右的位置,A对应1,B对应2,以此类推),再给每个需求和的数值列套上sum()函数group by后面必须把前面select里所有没套sum()的非数值字段全部列出来,只要这些字段内容完全一致,两行就会被判定为同一项目的重复记录,自动合并label子句是把sum聚合后默认生成的sum(Colx)表头改回你原来的字段名,保持报表表头和原表一致- 如果后续源表数据会增加,直接把取数范围的行号改大即可,比如改成
A2:I10000就能覆盖一万行数据,不用频繁调整公式
方案2:数据透视表实现(无需写公式,适合新手)
如果不想调整公式,也可以用数据透视表完成去重求和:
- 先用你原来写的合并公式,把两个工作表的全量数据合并到一个空白工作表中
- 选中合并后的数据区域,点击顶部菜单栏「数据」-「数据透视表」,选择存放位置为当前工作表空白区域或新工作表
- 在右侧数据透视表编辑器中,把所有非数值判断字段依次拖到「行」区域,点击每个行字段的菜单选项,把「汇总方式」改成「无」,关闭分类汇总
- 把所有需要求和的数值字段依次拖到「值」区域,点击每个值字段的菜单选项,把「汇总方式」改成「SUM 求和」
- 取消勾选编辑器里的「显示行总计」「显示列总计」选项,最终得到的就是去重合并后的全周期项目统计报表
常见异常处理
- 同项目未自动合并:先检查重复行的文本字段是否存在首尾空格、全角半角字符差异,可以提前在源表用
=TRIM(文本单元格)清洗所有文本列,去除不可见的多余字符 - 数值列求和结果为0或空:检查源表的数值列格式,确保单元格格式为「数字」而非「纯文本」,文本格式的数字无法被公式和透视表识别计算
- 合并后出现多余空行:确认where条件里的Col1<>''规则生效,检查源表A列是否有单元格存在看不见的空格导致被判定为非空行
内容的提问来源于stack exchange,提问作者Chamith De Costa
相关产品推荐
相关产品推荐

