求助编写SharePoint列表状态列顺序验证规则(含特殊条件)
你的原有公式仅验证状态是否属于允许的集合,但没有实现按指定顺序切换的核心需求——它允许直接从「Not started」跳到「Complete」,完全不符合你的要求。以下是实现状态顺序控制的正确公式:
=IF( AND([Request type]="Material Site Transfer", [To location]="Siler City"), // 特殊情况:状态序列 Not started → In Work → In transit → Complete OR( ISBLANK(OLD([Status])) && [Status]="Not started", // 新建条目只能设为初始状态 OLD([Status])="Not started" && [Status]="In Work", OLD([Status])="In Work" && [Status]="In transit", OLD([Status])="In transit" && [Status]="Complete" ), // 默认情况:状态序列 Not started → In Work → Complete OR( ISBLANK(OLD([Status])) && [Status]="Not started", // 新建条目只能设为初始状态 OLD([Status])="Not started" && [Status]="In Work", OLD([Status])="In Work" && [Status]="Complete" ) )
注意事项:
- 列名必须完全匹配:比如你的状态列显示是「In Work」还是「In work」,公式里的列名要和SharePoint列表中实际列名的大小写、空格完全一致。
- 配置错误提示:在验证规则的「用户消息」框中输入提示文本,比如「状态必须按指定顺序切换:Not started → In Work → Complete(特殊请求需经过In transit环节)」,方便用户理解规则。
- 新建条目逻辑:公式允许新建条目直接设置为「Not started」(初始状态),如果需要禁止新建时修改初始状态,可以调整对应逻辑。
设置步骤:
- 打开目标SharePoint列表,点击顶部「设置」→「列表设置」。
- 在「常规设置」板块找到「验证设置」。
- 将上述公式粘贴到「公式」输入框,填写用户消息后点击「保存」即可。
内容的提问来源于stack exchange,提问作者akinlaw
相关产品推荐
相关产品推荐

