我有一张工作表,我在其中控制提供的服务,并在各列中填充执行日期和结论日期。 这些列具有针对无效日期的数据验证,并且还用于用户不输入周末或节假日(在同一电子表格的另一页上列出)。因此它必须是自定义公式验证。
验证公式:
=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似乎已解决了该问题。
希望有人可以帮助我。
答案 0 :(得分:1)
用于数据验证的自定义公式:
=(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")))))
用于条件格式的自定义公式(无效的红色):
=((ISDATE(A1))*
(WEEKDAY(A1, 2)<>6)*
(WEEKDAY(A1, 2)<>7)*
(NOT(REGEXMATCH(TO_TEXT(A1), TEXTJOIN("|", 1, INDIRECT("Sheet2!H:H")))))=0)*
(A1<>"")
答案 1 :(得分:0)
我发现,当用户将其复制并粘贴到单元格中而不是键入时,会发生此问题,这是较大部分信息的一部分。这将数据验证分成“碎片”,因为复制和粘贴不是数据验证附带的。我不确定您是否遇到这种情况,但这可能意味着培训用户仅复制和粘贴值或仅对信息进行硬键粘贴。