Excel使用COUNTIFS公式实现项目失败阶段后值置0的问题咨询
问题根因
你原公式的逻辑判断方向完全写反了:
原公式中$AA$3:$AA$300,">="&$AA33的条件,是统计当前阶段及之后阶段的失败记录,会导致后续阶段的失败错误标记到前面的正常阶段(比如样例中项目3阶段1本身是成功,后续阶段2失败,按原公式会把阶段1误判为0,和预期不符)。
实际需求的判断逻辑应该是:统计同项目下,**当前阶段及之前阶段(含同阶段任意记录)**是否出现过失败,只要存在失败记录,当前行就标记为0,否则标记为1——失败只会影响同阶段和后续阶段,不会影响之前的阶段。
修正后公式
假设新列从第3行开始填写,数据最大行不超过300行,在新列第3行输入以下公式,下拉填充整列即可:
=IF(COUNTIFS($U$3:$U$300,$U3,$AA$3:$AA$300,"<="&$AA3,$AB$3:$AB$300,0)>0,0,1)
公式完全匹配给定的样例规则:
- 同项目同阶段只要有1条失败记录,该阶段所有行都标记为0
- 同项目中阶段号大于等于最早失败阶段号的所有行,全部标记为0
- 早于项目最早失败阶段的行,不受后续失败影响,标记为1
适配调整说明
- 如果实际数据行数超过300行,把公式中三个引用范围的结束行号
300改成实际数据最后一行的行号即可,注意范围起始行的$绝对引用符号不要删除,避免下拉时范围偏移。 - 如果使用的是Excel 365/2021及以上支持动态数组的版本,可以直接用整列引用,不需要手动固定行号,公式如下:
=IF(COUNTIFS(U:U,$U3,AA:AA,"<="&AA3,AB:AB,0)>0,0,1)
- 输入第一行公式时,相对引用部分(
$U3/$AA3/AB3里的行号3)要和当前输入公式的行号保持一致,输入完成后直接下拉就能自动适配所有行。
内容的提问来源于stack exchange,提问作者Cathy11
相关产品推荐
相关产品推荐

