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

如何在Google Sheets中实现类似Sumuniqueifs的去重条件求和?

解决Google Sheets中重复ORDER ID的保费求和问题

问题场景

现有如下表格数据,其中ORDER ID存在重复记录:

ORDER ID状态交易月份保费代理人姓名
1000-8359PAIDDecember5000JOHN DOE
1000-8360PAIDDecember6000JOHN DOE
1000-8360PAIDDecember6000JOHN DOE

需要计算JOHN DOE在December的保费总和,但使用常规SUMIFS函数:

=sumifs(D:D, B:B, "PAID", C:C, "December",E:E, "JOHN DOE")

会得到17000(重复计算了ORDER ID 1000-8360的6000保费),而实际期望结果是11000(仅统计每个唯一ORDER ID的保费一次)。由于Google Sheets没有原生的Sumuniqueifs函数,可通过以下几种方法实现需求:

解决方案

方法1:使用QUERY函数

通过分组查询先获取每个唯一ORDER ID的保费,再求和:

=SUM(QUERY(A:E, "SELECT D WHERE B='PAID' AND C='December' AND E='JOHN DOE' GROUP BY A,D", 1))

逻辑说明:先筛选出符合条件的行,再按ORDER ID(A列)和保费(D列)分组,确保每个ORDER ID只保留一条记录,最后对分组后的保费求和。

方法2:结合FILTER、UNIQUE与SUMPRODUCT

先筛选符合条件的记录,再提取唯一ORDER ID对应的保费并求和:

=SUMPRODUCT(UNIQUE(FILTER(D:D, B:B="PAID", C:C="December", E:E="JOHN DOE", MATCH(A:A, A:A, 0)=ROW(A:A))))

逻辑说明:MATCH(A:A, A:A, 0)=ROW(A:A)用于筛选出每个ORDER ID的第一条记录,再通过UNIQUE确保无重复,最后用SUMPRODUCT求和。

方法3:使用BYROW与UNIQUE(适合Google Sheets新版本)

利用LAMBDA函数处理唯一记录的保费求和:

=SUM(BYROW(UNIQUE(FILTER(A:D, B:B="PAID", C:C="December", E:E="JOHN DOE")), LAMBDA(row, row[3])))

逻辑说明:先筛选符合条件的行,通过UNIQUE去重(基于整行,这里ORDER ID唯一则整行保费一致),再用BYROW提取每行的保费列(索引3,从0开始计数),最后求和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 08:23:42