如何用Excel公式创建SKIPPING列标记订单违规跳步
跳步违规标记(SKIPPING列)逻辑修正方案
原公式的核心缺陷
原公式=IF($C2="completed","",IF($A2=$A3,"skipped",""))的触发逻辑完全偏离业务规则:
- 标记触发的前提是「当前行状态为In process、且下一行属于同一ORDERS」,没有绑定“跳步违规的本质是某条已完成的STEP跳过了未完成的前置步骤”的判定要求
- 因此会把每个ORDERS中、最后一个已完成STEP之后,本来处于正常推进流程的In process步骤,全部误判为skipped,也就是提到的ORDERS202下004、005号STEP的误判场景
符合业务规则的判定逻辑
同一ORDERS内,某STEP只要满足两个条件就属于跳步违规:1. 自身状态为completed;2. 同ORDERS下存在任意序号比它小的前置STEP处于In process状态
*核心调整:违规标记只针对状态为completed的行做判定,从根源上排除对正常在途In process步骤的误判。
可直接套用的公式
假设数据表列布局为:
- A列:ORDERS编号
- B列:STEP编号
- C列:STATUS
- D列:SKIPPING标记列
- 数据从第2行开始,D2单元格输入以下公式后向下填充即可:
=IF($C2<>"completed","",IF(COUNTIFS($A:$A,$A2,$B:$B,"<"&$B2,$C:$C,"In process")>0,"skipped",""))
公式说明
- 第一层判断:如果当前行STATUS不是completed,直接返回空值,不会对In process状态的行做任何标记
- 第二层判断:统计当前行所在ORDERS下,所有STEP编号小于当前行、且状态为In process的行数量;只要数量大于0,说明当前completed的STEP存在未完成的前置步骤,判定为跳步违规,标记为skipped
大数据量优化提示
如果表中数据行数较多,整列引用(如$A:$A)会增加计算开销,可以把公式中的整列范围替换为实际数据的固定区间,比如数据总共到10000行,就写为:
=IF($C2<>"completed","",IF(COUNTIFS($A$2:$A$10000,$A2,$B$2:$B$10000,"<"&$B2,$C$2:$C$10000,"In process")>0,"skipped",""))
内容的提问来源于stack exchange,提问作者Ron
相关产品推荐
相关产品推荐

