Excel13中如何统计A列各值对应B列的非空唯一值数量
Excel按ColA分组统计ColB非空唯一值个数实现方案
需求梳理
- 原始数据包含ColA(分组维度列)、ColB(待统计值列)两列
- 统计规则:针对ColA的每一个取值,计算其对应匹配到的ColB列中非空、去重后的值总个数
- 前置条件:已在独立列提取完ColA的全部去重值,需逐行匹配返回统计结果
- 预期校验标准:ColA值为1时返回2,值为2时返回1,值为3时返回3
可直接套用的公式
使用前先替换公式里的范围为你表格的实际范围:
- 原始ColA全量数据范围:示例写为
A2:A100 - 原始ColB全量数据范围:示例写为
B2:B100 - 提前提取好的ColA去重值存放在D列,第一个去重值在D2单元格
注意:原始数据范围要加$设置为绝对引用,避免下拉填充时范围错位
Excel 365/2021及以上版本
D2单元格输入以下公式,回车后直接下拉填充到所有去重值行即可:
=COUNTA(UNIQUE(FILTER($B$2:$B$100,($A$2:$A$100=D2)*($B$2:$B$100<>""))))
公式逻辑:
- 用
FILTER筛选出A列等于当前统计值、且B列不为空的所有B列数据 - 用
UNIQUE对筛选出的B列值去重 - 用
COUNTA统计去重后的值总数,即为所求结果
如果需要兼容无匹配项的报错,可以套一层容错逻辑,公式改为:
=IFERROR(COUNTA(UNIQUE(FILTER($B$2:$B$100,($A$2:$A$100=D2)*($B$2:$B$100<>"")))),0)
Excel 2019及更早无动态数组功能的版本
老版本不支持FILTER、UNIQUE函数,用SUMPRODUCT计数去重写法,D2单元格输入以下公式,回车后下拉填充即可:
=SUMPRODUCT(($A$2:$A$100=D2)*($B$2:$B$100<>"")/COUNTIFS($A$2:$A$100,$A$2:$A$100,$B$2:$B$100,$B$2:$B$100&""))
这个公式通过COUNTIFS计算每个值的出现次数做除法去重,自动过滤空值,不需要按数组三键,输入完成直接生效。
内容的提问来源于stack exchange,提问作者Rahul Wagh
相关产品推荐
相关产品推荐

