如何使用COUNTIFS统计指定日期范围内的唯一首单客户数
问题解答
纯COUNTIFS函数无法直接实现该统计需求,核心限制如下:
- COUNTIFS不支持传入多单元格区域作为逐行比对的条件参数,你原公式中
"="&Sheet1!$B$2:$B$20000的写法不会逐行判断A、B列值是否相等,仅会匹配B列首个单元格的值,无法实现首单记录筛选 - COUNTIFS无原生去重计数能力,就算条件判断逻辑正常,返回的也是符合条件的订单行数,无法统计唯一客户ID数量
- 你原公式还存在引用错误:第三个条件的工作表名写为
Sheet!,漏写数字1,正确引用应为Sheet1!
你的需求可以拆解为三步逻辑实现:
- 筛选出A列(首单日期)=B列(订单日期)的首单记录行
- 从上述记录中筛选出首单日期落在指定起止日期区间内的行
- 对筛选结果的客户ID去重后计数
适配Excel 365/2021及以上版本的实现方案
直接使用以下公式,输入完成后直接回车即可返回正确结果:
=ROWS(UNIQUE(FILTER(Sheet1!$C$2:$C$20000,(Sheet1!$A$2:$A$20000=Sheet1!$B$2:$B$20000)*(Sheet1!$A$2:$A$20000>=Sheet2!E$2)*(Sheet1!$A$2:$A$20000<=Sheet2!E$3))))
公式逻辑:
- 用
FILTER筛选同时满足「首单记录、日期在起止区间内」三个条件的客户ID列 - 用
UNIQUE对筛选出的客户ID做去重处理 - 用
ROWS统计去重后的ID数量,即为最终结果
用你提供的样例数据验证: - 日期范围选3月时,返回结果为1(仅客户2符合)
- 日期范围选1月时,返回结果为1(仅客户1符合)
- 日期范围选4月时,返回结果为2(客户3、客户4符合),完全匹配预期结果
适配Excel 2019及更早旧版本的实现方案
旧版Excel无FILTER、UNIQUE函数,可使用SUMPRODUCT搭配COUNTIFS实现,输入完成后直接回车即可:
=SUMPRODUCT((Sheet1!$A$2:$A$20000=Sheet1!$B$2:$B$20000)*(Sheet1!$A$2:$A$20000>=Sheet2!E$2)*(Sheet1!$A$2:$A$20000<=Sheet2!E$3)/COUNTIFS(Sheet1!$A$2:$A$20000,Sheet1!$A$2:$A$20000,Sheet1!$B$2:$B$20000,Sheet1!$B$2:$B$20000,Sheet1!$C$2:$C$20000,Sheet1!$C$2:$C$20000))
该公式通过除以重复记录权重的方式实现去重计数,计算结果与新版公式完全一致。
内容的提问来源于stack exchange,提问作者denlau
相关产品推荐
相关产品推荐

