求助:按产品、月份统计唯一客户的营收求和方案
问题:按产品、月份统计去重后的客户营收总和
需要按产品、月份统计唯一客户的营收总和,规则:同一客户在同一月份同一产品的营收仅计算一次(业务中同客户同产品同月的营收值一致)。
原始数据
| 报告月份(Report_Month) | 客户编码(cl_Code) | 营收(Revenue) | 产品(Product) |
|---|---|---|---|
| 31/08/2023 | ALT122 | 40 | DD |
| 31/08/2023 | ATT047 | 50 | DD |
| 31/07/2023 | BAP022 | 40 | DD |
| 31/07/2023 | BAP022 | 25 | AA |
| 31/08/2023 | BAP022 | 124.8 | DD |
| 31/08/2023 | BAP022 | 25 | AA |
| 31/08/2023 | BLE049 | 85 | DD |
| 31/07/2023 | CEN204 | 40 | DD |
| 31/08/2023 | CEN204 | 42.1 | DD |
| 31/08/2023 | CHI256 | 181.2 | DD |
| 31/08/2023 | FAR140 | 100 | DD |
| 31/07/2023 | GOO142 | 140 | DD |
| 31/08/2023 | GOO142 | 140 | DD |
| 31/08/2023 | GRE596 | 80 | DD |
| 31/08/2023 | GRE596 | 250 | AA |
| 31/07/2023 | INT485 | 85 | DD |
| 31/07/2023 | INT485 | 25 | AA |
| 31/08/2023 | INT485 | 25 | AA |
| 31/08/2023 | INT485 | 85 | DD |
| 31/08/2023 | JJA004 | 50 | DD |
| 31/07/2023 | LAN308 | 101 | DD |
| 31/08/2023 | LAN308 | 82.86 | DD |
| 31/08/2023 | LIF104 | 113.8 | DD |
| 31/07/2023 | NEW492 | 85.6 | DD |
| 31/08/2023 | NEW492 | 85.9 | DD |
| 31/07/2023 | ORA061 | 85 | DD |
| 31/08/2023 | ORA061 | 89 | DD |
| 31/07/2023 | POL137 | 65 | DD |
| 31/08/2023 | POL137 | 65 | DD |
| 31/07/2023 | PRO581 | 40 | DD |
| 31/07/2023 | PRO581 | 25 | AA |
| 31/08/2023 | PRO581 | 25 | AA |
| 31/08/2023 | PRO581 | 49 | DD |
| 31/07/2023 | RCA003 | 250 | DD |
| 31/08/2023 | RCA003 | 250 | DD |
| 31/08/2023 | REG109 | 40 | DD |
| 31/07/2023 | RIV132 | 85.5 | DD |
| 31/08/2023 | RIV132 | 118 | DD |
| 31/07/2023 | VIV046 | 25 | AA |
| 31/07/2023 | VIV046 | 41.72 | DD |
| 31/07/2023 | VIV046 | 25 | AA |
| 31/07/2023 | VIV046 | 41.72 | DD |
| 31/08/2023 | VIV046 | 122.94 | DD |
| 31/08/2023 | VIV046 | 122.94 | DD |
| 31/08/2023 | YOU274 | 162.18 | DD |
预期结果
| 2023年7月 | 2023年8月 | |
|---|---|---|
| AA | 100 | 325 |
| DD | 1058.82 | 2156.78 |
注:客户VIV046在2023年7月同一产品的重复行需仅计入一次。
尝试的公式(未得到正确结果)
=SUM(UNIQUE(FILTER(REVENUE,(REPORT_MONTH=C2),TRUE,TRUE)))
解决方案
问题分析
之前的公式仅过滤了月份,未同时匹配产品,也未基于客户编码+月份+产品的组合去重,导致重复计算了同一客户同产品同月的营收。
正确公式(Excel 365/2021 适用)
假设数据区域为A2:D46(表头在A1:D1),以下两种方法均可实现需求:
方法1:PIVOTBY函数(推荐,自动生成交叉表)
=PIVOTBY(D:D,A:D,C:C,SUM,,UNIQUE(HSTACK(A:A,D:D)),"yyyy年m月")
该函数自动按产品、月份分组,因同客户同产品同月营收值一致,求和时自然仅计算一次(也可将聚合参数改为MAX,结果相同)。
方法2:SUMPRODUCT+UNIQUE(单个单元格计算)
以计算产品AA在2023年7月的总和为例:
=SUMPRODUCT(UNIQUE(FILTER(C2:C46,(TEXT(A2:A46,"yyyy年m月")="2023年7月")*(D2:D46="AA"))))
若要动态匹配单元格(如E1为"2023年7月",F2为"AA"),可修改为:
=SUMPRODUCT(UNIQUE(FILTER(C2:C46,(TEXT(A2:A46,"yyyy年m月")=E1)*(D2:D46=F2))))
公式解释
- TEXT(A2:A46,"yyyy年m月"):将日期格式的报告月份转换为统一文本格式,便于匹配。
- (TEXT(...)="2023年7月")*(D2:D46="AA"):同时筛选指定月份和产品的行。
- UNIQUE(FILTER(...)):对筛选后的营收值去重,确保同一客户同产品同月仅保留一个值。
- SUMPRODUCT/SUM:对去重后的营收值求和,得到最终结果。
内容的提问来源于stack exchange,提问作者Fazza
相关产品推荐
相关产品推荐

