Excel 2016 多条件按Control ID去重统计控制项数量的公式咨询
Excel 2016 无筛选场景的控制项统计公式实现
先做列位置约定:根据你提供的工作表结构,默认列对应关系为:
- A列:Risk(风险列)
- B列:Control(控制项名称列)
- C列:Control ID(去重判断的唯一标识列)
- D列:Category(控制项分类列)
- E列:Status(控制项状态列)
以下所有公式默认数据范围为你附的测试数据集范围(第2行到第7行),实际使用时替换为真实数据范围即可,无需开启任何筛选功能。
需求1:按Control ID去重统计全量控制项总数
- 公式:
=SUMPRODUCT((C2:C7<>"")/COUNTIF(C2:C7,C2:C7&"")) - 实现逻辑:逐行计算每个Control ID在当前列的出现次数,对每个ID取「1/出现总次数」作为权重值,重复出现的ID权重累加后恰好为1,天然实现去重计数;额外增加的
(C2:C7<>"")判断,是为了排除Control ID为空的无效行,避免触发除零报错。 - 针对你给出的测试数据集,公式计算结果为4,对应不重复的Control ID为1、2、3、4,与实际值完全一致。
需求2:按Control ID去重统计满足「Category为High且Status为Late」的控制项数量
- 公式:
=SUMPRODUCT((D2:D7="High")*(E2:E7="Late")*(C2:C7<>"")/COUNTIF(C2:C7,C2:C7&"")) - 实现逻辑:在上述去重权重计算的基础上,叠加两个判断条件:只有同时满足Category值为"High"、Status值为"Late"的行才会计入权重,不满足条件的行权重直接为0;对符合筛选条件的行,同样按照「ID出现次数倒数」计算权重,避免重复计数。
- 针对你给出的测试数据集,公式计算结果为1,对应唯一符合条件的Control ID为1,与实际值完全一致。
适配说明
- 所有公式均为Excel 2016兼容的普通公式,输入完成后直接按回车即可生效,无需按数组三键(Ctrl+Shift+Enter)。
- 公式对数字、文本格式的Control ID均兼容,不会因为ID格式差异出现计数错误。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

