【问题标题】:Google Sheets Data Validation not rejecting invalid input谷歌表格数据验证不拒绝无效输入
【发布时间】:2020-06-13 04:00:14
【问题描述】:

我有一张表格,我可以在其中控制所提供的服务,其中的栏填满了执行日期和结束日期。 这些列具有无效日期的数据验证,并且用户不输入周末或假期(在同一电子表格的另一页上列出)。所以它必须是自定义公式验证。

验证公式:

=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 行有标题。

问题: 数据验证输入拒绝似乎在最初的几个小时内工作正常,有时是一整天,但在这段随机时间之后,它停止工作。实际上它确实有效,但带有红旗,即使“拒绝输入”选项仍处于选中状态。

我的猜测是问题出在另一个工作表中的引用上,但我没有看到任何其他方法可以做到这一点,因为将假期列表包含到主工作表会污染它并且隐藏列不会尽可能实用,因为用户会不断更新列表。

有没有办法让它发挥作用?

附:即使使用 INDIRECT 进行外部引用,条件格式也会返回错误,但现在 Google 似乎已经修复了它。

希望有人可以帮助我。

【问题讨论】:

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


【解决方案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<>"")


spreadsheet demo

【讨论】:

  • 公式似乎在启用“拒绝输入”选项的情况下运行良好。让我们拭目以待,看看它是否能一直正常工作。我稍后会发布结果。
  • 好吧,我刚刚重新加载了我的工作表,“拒绝输入”似乎又停止了工作。猜猜我必须按照您的建议使用“显示警告”+条件格式。我已经为谷歌发布了一个问题跟踪器来了解这个错误。还是谢谢。
【解决方案2】:

我发现问题发生在用户复制并粘贴到单元格中,而不是输入时,作为更大信息部分的一部分。这将数据验证分解为“片段”,因为复制和粘贴不附带数据验证。我不确定您是否属于这种情况,但这可能意味着培训用户仅复制和粘贴值或仅硬键输入信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    相关资源
    最近更新 更多