Excel 2016:匹配白名单时统计指定列唯一值数量
解决方法
适用于Excel 365/2021(动态数组版本)
直接用ROWS+UNIQUE+FILTER组合,公式简洁高效:
=ROWS(UNIQUE(FILTER(A:A,ISNUMBER(MATCH(B:B,C:C,0)))))
- 拆解说明:
MATCH(B:B,C:C,0):检查B列每个值是否在C列白名单内,存在返回对应位置,不存在返回错误值ISNUMBER(...):把MATCH结果转成布尔值,匹配成功为TRUE,失败为FALSEFILTER(A:A,...):筛选出B列匹配白名单的所有A列数据UNIQUE(...):提取筛选结果里的唯一值ROWS(...):统计唯一值的数量
适用于旧版Excel(无动态数组)
用SUMPRODUCT+COUNTIF组合,部分版本需按Ctrl+Shift+Enter触发数组计算:
=SUMPRODUCT((ISNUMBER(MATCH(B:B,C:C,0)))/COUNTIF(A:A,A:A&""))
- 拆解说明:
ISNUMBER(MATCH(B:B,C:C,0)):标记B列匹配白名单的行COUNTIF(A:A,A:A&""):统计每个A列值的出现次数- 用匹配标记除以出现次数后求和,自动实现唯一值统计(每个唯一A值仅计数1次)
注意事项
- 把公式里的
A:A、B:B、C:C替换成实际数据区域(比如A2:A100、B2:B100、C2:C5),避免整列拖慢计算速度 - 白名单列(C列)不要留空值,否则会误匹配空值行
内容的提问来源于stack exchange,提问作者KananBendu
相关产品推荐
相关产品推荐

