Excel多条件统计指定列:COUNTIFS报错与去重计数需求
解决小组取消课程数统计问题
我明白你遇到的问题了:之前的COUNTIFS公式因为参数区域大小不匹配报错,而且没法处理同一课程多人标记"C"只计1次的需求。咱们一步步来解决它。
问题分析
你的核心需求是:对指定小组,统计至少有一人标记"C"的课程数量,同一课程不管多少人标"C"都只算1次。之前的COUNTIFS(METRICS!F:F,H5,Attendance,"C")有两个关键问题:
METRICS!F:F是单列区域,Attendance是多列课程区域,两者大小不匹配,直接触发Array arguments to COUNTIFS are of different size错误;- 公式会把同一课程下的所有"C"重复计数,无法实现"同一课程仅计1次"的去重要求。
解决方案
这里提供两个可行的公式,你可以根据自己的Excel版本选择:
方案1:兼容大部分Excel版本(SUMPRODUCT + MMULT)
=SUMPRODUCT(--(MMULT(--(METRICS!F:F=H5),--(Attendance="C"))>0))
方案2:适用于Excel 365/2021(FILTER + UNIQUE + COUNT)
=COUNT(UNIQUE(FILTER(COLUMN(Attendance), MMULT(--(METRICS!F:F=H5), --(Attendance="C"))>0)))
公式拆解
咱们来拆解下核心逻辑:
--(METRICS!F:F=H5):把"当前行是否属于目标小组"的判断结果转换成1(是)和0(否)的数组;--(Attendance="C"):把Attendance区域中每个单元格是否为"C"的判断结果转换成1和0的数组;MMULT(...):通过矩阵乘法,计算每门课程列中属于目标小组的行里有多少个"C",得到一个对应每门课程的计数数组;>0:判断该课程列是否至少有一个"C",得到TRUE/FALSE的数组;- 最后通过
SUMPRODUCT(--(...))或COUNT(UNIQUE(...)),把TRUE/FALSE转换成1/0后求和,得到符合条件的课程总数。
示例验证
比如当H5是GE COL INT MIX W时,公式会返回2;当H5是GE COL INT 1 W时,返回0,完全匹配你给出的示例要求。
内容的提问来源于stack exchange,提问作者Juan Diego Valencia
相关产品推荐
相关产品推荐

