Excel如何执行逐列逻辑运算实现分月客户联系状态统计
之前公式失效的核心原因
你尝试使用的=SUMPRODUCT(AND(B2:B5="January", C2:C5="Yes"))无法运行,本质是AND函数属于聚合类逻辑函数:它会把传入的整段数组判断结果合并成单个全局TRUE/FALSE值,不会逐行生成对应每一行数据的判断结果,完全不符合SUMPRODUCT函数要求的逐行数组运算规则。
另外你之前写的统计范围B2:B5漏了表格最后一行Peter的有效数据,会导致January月的客户总数统计结果少算1条。
可实现自动同步的正确统计公式
假设你的原始客户信息表结构为:A列姓名、B列月份、C列是否已联系,有效数据行覆盖第2行到第6行;目标统计表结构为:A列是待统计的月份名称(A2单元格为January、A3为March、A4为May),所有公式写好后从第2行下拉即可自动适配其他月份的统计值,原始表数据修改后统计结果会自动同步更新。
- 对应月份的客户总数(目标表B2单元格)
公式:=SUMPRODUCT(--(原始表!$B$2:$B$6=$A2))
逻辑:用--把逐行匹配月份的TRUE/FALSE判断结果转换为1/0,求和后就是该月的总客户数。公式里的范围加$设置为绝对引用,下拉时不会偏移统计范围。 - 对应月份已联系客户数(目标表C2单元格)
不要用AND函数做逐行判断,改用SUMPRODUCT支持的多数组逐行运算规则实现“同时满足两个条件”的逻辑:
公式:=SUMPRODUCT(--(原始表!$B$2:$B$6=$A2), --(原始表!$C$2:$C$6="Yes"))
逻辑:两个判断数组会被逐行对应相乘,只有同时满足“月份匹配”“已联系标记为Yes”的行,乘积才为1,求和后就是该月已联系的客户总数。 - 对应月份未联系客户数(目标表D2单元格)
两种等价写法可任选:- 直接按条件统计:
=SUMPRODUCT(--(原始表!$B$2:$B$6=$A2), --(原始表!$C$2:$C$6="No")) - 简化计算:
=B2-C2,直接用当月客户总数减去已联系数得到结果,计算效率更高。
- 直接按条件统计:
额外优化提示
如果你使用的是Excel 365/2021及以上版本,可以用语法更简洁、计算效率更高的COUNTIFS函数实现完全一致的统计效果,比如已联系客户数的公式可以替换为:=COUNTIFS(原始表!$B:$B, $A2, 原始表!$C:$C, "Yes")
这种写法同样支持原始表数据修改后自动同步更新统计结果,不需要手动调整公式范围。
内容的提问来源于stack exchange,提问作者Tyrian
相关产品推荐
相关产品推荐

