如何用Excel函数创建布尔向量并实现特定SUMPRODUCT统计?
统计唯一ID且F列符合指定值的行数(无辅助列解法)
直接使用以下公式即可实现需求:
=SUMPRODUCT(N(COUNTIF(Data!$D:$D,Data!$D:$D)=1)*N(ISNUMBER(MATCH(Data!$F:$F,{"A01","A02"},0))))
公式拆解说明:
COUNTIF(Data!$D:$D,Data!$D:$D)=1:生成布尔数组,每个元素对应D列的行,TRUE表示该行ID在D列中唯一(仅出现1次),FALSE表示重复。ISNUMBER(MATCH(Data!$F:$F,{"A01","A02"},0)):生成布尔数组,标记F列每行的值是否属于{"A01","A02"}中的任意一个,匹配成功返回TRUE,失败返回FALSE。N(...):将布尔值转换为数值(TRUE转1,FALSE转0),通过乘法实现“同时满足两个条件”的逻辑(仅当两个条件都为1时,乘积才为1)。SUMPRODUCT:对所有乘积结果求和,最终得到同时满足「D列ID唯一」和「F列值为A01/A02」的总行数。
原尝试的问题说明:
你之前用的IF(Data!$F:$F={"A01","A02"},TRUE,FALSE)写法存在数组维度匹配问题——Excel中这种横向数组对比会按行逐一匹配,导致只有部分行能正确判断,无法实现“每个F列值是否在指定列表中”的需求,因此改用MATCH+ISNUMBER的组合更可靠。
内容的提问来源于stack exchange,提问作者Romane
相关产品推荐
相关产品推荐

