首页 > 解决方案 > 自定义 Excel 数据验证公式将输入限制为时间、空白或“-”

问题描述

我正在尝试使用 excels 数据验证自定义选项编写数据验证规则(用于记录和处理服务时间(一天中的时间)的电子表格,以便输入仅限于时间,但用户还可以区分哪些条目仍需输入并且没有来自源的数据因此我需要说给定范围(一列)中的每个单元格必须是格式为“hh:mm”的有效时间条目,或者空白或“-”(表示没有服务。有问题的列的格式为 hh:mm。到目前为止,我有以下内容,但它不起作用。

=OR(TIMEVALUE(TEXT(Q1248,"hh,mm,ss")),"","-")

我收到警告“公式当前计算为错误”,然后它将拒绝所有输入。

非常感谢任何可以提供帮助的人。

标签: validationtimeexcel-formula

解决方案


你需要问“这个单元格是否等于这个值?对还是错?”

通过勾选“数据验证”对话框上的“忽略空白”复选框来忽略空白。

=Q1248=TIMEVALUE(TEXT(Q1248,"hh:mm:ss"))将回答Q1248 是否等于 Q1248 当它被强制为时间值的问题?

当它尝试将值计算-为格式化为时间的文本时,就会出现问题。它返回 #VALUE 错误。
如果你的公式可以是=OR(Q1248=TIMEVALUE(TEXT(Q1248,"hh:mm:ss")),Q1248="-")- Q1248 是否等于时间值,还是 Q1248 等于破折号? 但它会尝试评估OR语句的两个部分,第一部分返回错误,因此整个公式返回错误。

这似乎可以作为数据验证(没有自定义数字格式):
=IF(ISNUMBER(Q1250),Q1250=TIMEVALUE(TEXT(Q1250,"hh:mm:ss")),Q1250="-")

如果该值不是数字,IF则评估第二部分,否则第一部分是并且不会发生错误。


正如所指出的,这不起作用,因为数据验证将尝试将“-”转换为时间值,这将导致错误:

=Q1248=TIMEVALUE(TEXT(Q1248,"hh:mm:ss"))并为单元格提供自定义数字格式。 任何正数都将显示为时间,0 或负数将显示为。 只是使用而不是得到你想要的结果。hh:mm;"-";"-"
-
0-


推荐阅读