You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Excel多条件统计唯一值报错求助:统计符合条件的唯一姓名数

解决Excel中符合多条件的唯一姓名计数问题

首先,咱们先搞清楚你原来的公式为什么会报错:你的SUMPRODUCT(1/COUNTIFS(...))写法里,包含了不满足筛选条件的行,比如A在2016年的记录、D的2016年记录,这些行不满足年份或奖牌数的条件,导致COUNTIFS对它们返回0,触发了1/0的除法错误(#DIV/0!)。

针对你的需求——统计「奖牌数>2且<6,年份为2017或2018」的唯一姓名数量,这里给你两种适配不同Excel版本的解决方案,都适合大型数据集:

方案1:适配所有Excel版本(含旧版)的数组公式

这个方案用FREQUENCY来实现去重计数,不会出现除法错误,计算效率也不错:

=SUMPRODUCT(--(FREQUENCY(IF((B2:B9>2)*(B2:B9<6)*(C2:C9>=2017)*(C2:C9<=2018),MATCH(A2:A9,A2:A9,0)),ROW(A2:A9)-ROW(A2)+1)>0))

公式解析:

  1. (B2:B9>2)*(B2:B9<6)*(C2:C9>=2017)*(C2:C9<=2018):用逻辑相乘的方式筛选出同时满足所有条件的行,返回一组TRUE/FALSE数组。
  2. IF(...,MATCH(A2:A9,A2:A9,0)):对满足条件的行,返回该姓名在A列首次出现的位置;不满足的行返回FALSE。
  3. FREQUENCY(...,ROW(A2:A9)-ROW(A2)+1):统计这些位置的出现频率,每个唯一姓名只会对应一个非零的频率值。
  4. --(FREQUENCY(...)>0):把频率大于0的结果转成1,否则转成0,最后用SUMPRODUCT求和得到唯一姓名的数量。

注意:如果是Excel 2019及更早版本,输入公式后需要按Ctrl+Shift+Enter作为数组公式确认。

方案2:适配Excel 365/2021及以上的动态数组公式

如果你用的是支持动态数组的Excel版本,这个公式更简洁直观,处理大型数据集的效率也更高:

=COUNTA(UNIQUE(FILTER(A2:A9,(B2:B9>2)*(B2:B9<6)*(C2:C9={2017,2018}))))

公式解析:

  1. FILTER(A2:A9,...):直接筛选出满足所有条件的姓名列表。
  2. UNIQUE(...):对筛选后的姓名列表去重。
  3. COUNTA(...):统计去重后的姓名数量。

两种方案代入你的测试数据,都会返回预期的结果2(仅B和C符合条件)。

大型数据集优化建议:

  • 尽量使用精确的单元格范围(比如A2:A10000),避免整列引用(A:A),减少不必要的计算量。
  • 如果使用动态数组公式,确保你的Excel版本支持,否则会返回数组而非单个结果。

内容的提问来源于stack exchange,提问作者Sivakesav

火山引擎 最新活动