Google Sheets:求占总销售额80%的高贡献客户列表公式需求
筛选贡献80%销售额的高价值客户(Google Sheets方案)
实现逻辑
由于客户已按销售额降序排列,核心是找到累计销售额首次达到或接近总销售额80%的客户分组:
- 计算总销售额的80%作为阈值
- 逐行计算累计销售额
- 定位累计值首次跨越阈值的位置,提取该位置及之前的所有客户
无辅助列公式方案
在空白单元格输入以下公式(假设数据范围为A2:B,A列客户名、B列销售额,首行为表头):
=INDEX(A2:B, SEQUENCE(MATCH(TRUE, SCAN(0, B2:B, LAMBDA(acc, val, acc+val)) >= SUM(B2:B)*0.8, 0)), {1,2})
公式拆解
SUM(B2:B)*0.8:计算总销售额的80%阈值SCAN(0, B2:B, LAMBDA(acc, val, acc+val)):生成逐行累计销售额数组MATCH(TRUE, ... >= ..., 0):找到累计值首次≥阈值的行索引SEQUENCE(...):生成从1到目标索引的连续行号INDEX(A2:B, ..., {1,2}):提取对应的客户名称和销售额
兼容旧版函数的方案(需辅助列)
若无法使用SCAN函数:
- 在C2单元格输入累计公式并下拉:
=SUM($B$2:B2) - 用QUERY提取目标客户:
=QUERY(A2:C, "SELECT A,B WHERE C >= "&SUM(B2:B)*0.8&" LIMIT 1", 0)
如需提取所有累计值接近80%的客户,可调整为:
=QUERY(A2:C, "SELECT A,B WHERE C <= "&(SUM(B2:B)*0.8 + INDEX(C:C, MATCH(TRUE, C:C >= SUM(B2:B)*0.8, 0)) - SUM(B2:B)*0.8)&" ORDER BY B DESC", 0)
问题排查(针对你之前的异常情况)
- 引用范围错误:确认公式引用的是完整数据列(如
B2:B而非B2:B5),否则会遗漏后续客户 - 累计计算未锁定起始行:辅助列累计公式需锁定起始行(
$B$2),否则下拉时累计范围会偏移 - 排序失效:重新确认数据是否严格按销售额降序排列,排序错误会直接导致累计逻辑偏差
内容的提问来源于stack exchange,提问作者Bryce Gillespie
相关产品推荐
相关产品推荐

