如何用Excel公式统计符合状态与日期范围条件的唯一ID数量?
满足多条件的A列唯一ID统计方案
方法1:Excel 365/2021 动态数组公式(推荐)
用UNIQUE+FILTER组合实现自动范围识别,无需手动指定C3:C1801这类固定区间,公式如下:
=COUNTA(UNIQUE(FILTER(A:A,(ISNUMBER(MATCH(B:B,{"live","New","In Progress"},0)))*(C:C>=DATE(2022,11,1))*(C:C<=DATE(2022,11,15))*(A:A<>""))))
逻辑说明:
MATCH(B:B,{"live","New","In Progress"},0)判断B列值是否属于指定的Live相关状态,ISNUMBER将匹配结果转为布尔值C:C>=DATE(2022,11,1)和C:C<=DATE(2022,11,15)限定日期在目标区间内A:A<>""排除A列空值干扰FILTER筛选出所有符合条件的A列值,UNIQUE去重,COUNTA统计最终唯一ID数量
方法2:旧版Excel 数组公式
如果你的Excel不支持动态数组功能,使用以下数组公式,输入完成后需按 Ctrl+Shift+Enter 确认:
=SUM(IF(FREQUENCY(IF((ISNUMBER(MATCH(B:B,{"live","New","In Progress"},0)))*(C:C>=DATE(2022,11,1))*(C:C<=DATE(2022,11,15))*(A:A<>""),MATCH(A:A,A:A,0)),ROW(A:A)-ROW(A1)+1),1))
逻辑说明:
- 内层
IF筛选出符合所有条件的行,并用MATCH(A:A,A:A,0)获取每个ID首次出现的行号 FREQUENCY统计行号出现频次,仅保留首次出现的行号对应的有效计数SUM汇总所有有效计数,得到唯一ID的数量
额外提示
- 状态列表
{"live","New","In Progress"}可根据实际需求添加更多状态,用逗号分隔即可 - 使用整列引用(如
A:A)时,Excel会自动忽略无数据的空行,无需手动限定数据范围 - 用
DATE(2022,11,1)替代文本日期,可避免不同区域日期格式的兼容问题
内容的提问来源于stack exchange,提问作者eric_harper
相关产品推荐
相关产品推荐

