Google表格数据验证不拒绝无效输入

时间:2019-11-25 15:55:42

标签: regex validation google-sheets google-sheets-formula gs-conditional-formatting

我有一张工作表,我在其中控制提供的服务,并在各列中填充执行日期和结论日期。 这些列具有针对无效日期的数据验证,并且还用于用户不输入周末或节假日(在同一电子表格的另一页上列出)。因此它必须是自定义公式验证。

验证公式:

=AND(ISDATE(K2)=TRUE;K2>=J2;WEEKDAY(K2)<>1;WEEKDAY(K2)<>7;COUNTIF(Holidays!$A:$A;"="&K2)=0)

也尝试过

=AND(ISDATE(K2)=TRUE;K2>=J2;WEEKDAY(K2)<>1;WEEKDAY(K2)<>7;ISNA(MATCH(K2;Holidays!$A:$A;0))=TRUE)

,还尝试在两个选项上同时使用INDIRECT("Holidays!$A:$A")

***第K列具有数据验证功能,并且输入结论日期。 J列具有执行日期。第1行有标题。

问题: 数据验证输入拒绝似乎在前几个小时(有时是一整天)都可以正常工作,但是在这段随机的时间之后,它将停止工作。确实可以,但是带有红色标记,即使仍选中“拒绝输入”选项。

我的猜测是问题出在另一个表中的引用上,但是我看不到其他方法,因为将假期列表包含在主表中会对其造成污染,而隐藏列则不会由于用户不断更新列表,因此非常实用。

有办法使它正常工作吗?

P.S。即使使用INDIRECT进行外部引用时,条件格式化仍会返回错误,但现在Google似乎已解决了该问题。

希望有人可以帮助我。

2 个答案:

答案 0 :(得分:1)

用于数据验证的自定义公式:

=(ISDATE(A1))*  
 (WEEKDAY(A1, 2)<>6)*  
 (WEEKDAY(A1, 2)<>7)*  
 (NOT(REGEXMATCH(TO_TEXT(A1), TEXTJOIN("|", 1, INDIRECT("Sheet2!H:H")))))

0


用于条件格式的自定义公式(绿色有效):

=(ISDATE(A1))*  
 (WEEKDAY(A1, 2)<>6)*  
 (WEEKDAY(A1, 2)<>7)*  
 (NOT(REGEXMATCH(TO_TEXT(A1), TEXTJOIN("|", 1, INDIRECT("Sheet2!H:H")))))

用于条件格式的自定义公式(无效的红色):

=((ISDATE(A1))*  
 (WEEKDAY(A1, 2)<>6)*  
 (WEEKDAY(A1, 2)<>7)*  
 (NOT(REGEXMATCH(TO_TEXT(A1), TEXTJOIN("|", 1, INDIRECT("Sheet2!H:H")))))=0)*
 (A1<>"")

0


spreadsheet demo

答案 1 :(得分:0)

我发现,当用户将其复制并粘贴到单元格中而不是键入时,会发生此问题,这是较大部分信息的一部分。这将数据验证分成“碎片”,因为复制和粘贴不是数据验证附带的。我不确定您是否遇到这种情况,但这可能意味着培训用户仅复制和粘贴值或仅对信息进行硬键粘贴。