Excel:实现排除发票列空值的Distinct Countifs统计需求
解决方案:统计符合条件的唯一客户数量
一、适用于Excel 365/2021(支持动态数组)的公式
使用FILTER筛选符合条件的客户,UNIQUE去重,ROWS统计数量:
=ROWS(UNIQUE(FILTER(Table1[客户名称],(Table1[Year]=I2)*(Table1[Month]=I3)*(Table1[Invoice#]<>"")),TRUE))
- 公式逻辑:
(Table1[Year]=I2)*(Table1[Month]=I3)*(Table1[Invoice#]<>""):同时匹配年份、7月创建、发票编号非空三个条件,返回逻辑值数组FILTER:根据逻辑值筛选出对应客户名称UNIQUE:对筛选后的客户名称去重ROWS:统计去重后的客户总数
二、适用于旧版Excel(不支持动态数组)的公式
用SUMPRODUCT结合COUNTIF实现去重计数:
=SUMPRODUCT((Table1[Year]=I2)*(Table1[Month]=I3)*(Table1[Invoice#]<>"")/COUNTIF(Table1[客户名称],Table1[客户名称]&""))
- 公式逻辑:
- 前半部分
(Table1[Year]=I2)*(Table1[Month]=I3)*(Table1[Invoice#]<>""):生成符合条件的标记数组(符合为1,不符合为0) COUNTIF(Table1[客户名称],Table1[客户名称]&""):计算每个客户名称在列表中的出现次数- 用符合条件的标记除以对应客户的出现次数,每个唯一客户的所有符合条件行结果相加为1,
SUMPRODUCT求和后得到唯一客户总数
- 前半部分
原公式问题说明
你之前使用的=COUNTIFS(Table1[Year],I2,Table1[Month],I3)有两个局限:
- 未添加
Table1[Invoice#]<>的条件,无法排除发票编号为空的行 - 仅统计符合条件的总行数,无法对重复客户名称去重
内容的提问来源于stack exchange,提问作者Christina K
相关产品推荐
相关产品推荐

