Table of contents
本教程展示了如何在Excel中制作自定义的数据验证规则。 你会发现一些E的例子。 xcel数据验证公式只允许特定单元格中的数字或文本值,或只允许以特定字符开头的文本,允许唯一数据防止重复,以及更多。
在昨天的教程中,我们开始了解Excel数据验证--它的目的是什么,如何工作,以及如何使用内置规则来验证工作表中的数据。 今天,我们将更进一步,谈论Excel中自定义数据验证的细枝末节,并尝试使用一些不同的验证公式。
如何用公式创建自定义数据验证
Microsoft Excel有几个内置的数字、日期和文本的数据验证规则,但它们只涵盖了最基本的情况。 如果你想用自己的标准来验证单元格,可以根据公式创建一个自定义的验证规则。 下面是方法。
- 选择一个或多个要验证的单元格。
- 打开数据验证对话框。 为此,点击 数据验证 上的按钮。 数据 选项卡,在 数据工具 组或按下Alt> D> L的键序(每个键都要分别按下)。
- 关于 设置 选项卡的 数据验证 对话窗口,选择 定制 在 允许 框中输入你的数据验证公式,并在 公式 箱子。
- 点击 认可 .
你可以选择添加一个自定义的输入信息和错误提示,当用户选择了有效的单元格或输入了无效的数据时,就会分别显示出来。
下面你会发现一些针对不同数据类型的自定义验证规则的例子。
注意:所有的Excel数据验证规则,不管是内置的还是自定义的,都只验证创建规则后输入到单元格中的新数据。 复制的数据不被验证,在制定规则前输入到单元格中的数据也不被验证。 要找出不符合你的数据验证标准的现有条目,使用 圈出无效数据 功能,如《如何在Excel中查找无效数据》所示。
Excel数据验证,只允许数字
令人惊讶的是,没有一个内置的Excel数据验证规则可以满足一个非常典型的情况,即你需要限制用户在特定的单元格中只输入数字。 但是,这可以通过一个基于ISNUMBER函数的自定义数据验证公式轻松实现,比如这个。
=ISNUMBER(C2)
其中C2是你要验证的范围的最上面的单元格。
注意:ISNUMBER函数允许在验证的单元格中使用任何数值,包括整数、小数、分数以及日期和时间,这些在Excel中也是数字。
Excel数据验证只允许文本
如果你正在寻找相反的方法--只允许在给定的单元格范围内输入文本,那么就用ISTEXT函数建立一个自定义规则,比如说。
=ISTEXT(D2)
其中D2是所选范围的最上层单元格。
允许以特定字符开头的文本
如果某个范围内的所有数值都应该以某个特定的字符或子串开始,那么就根据COUNTIF函数用通配符进行Excel数据验证。
COUNTIF( 电池 ," 文本 *")例如,为了确保A列的所有订单ID以 "AA-"、"aa-"、"Aa-"或 "aA-"的前缀开始(不区分大小写),用这个数据验证公式定义一个自定义规则。
=COUNTIF(A2, "aa-*")
具有OR逻辑的验证公式(多个标准)。
如果有2个或更多的有效前缀,可以增加几个COUNTIF函数,这样你的Excel数据验证规则就可以用OR逻辑工作。
=COUNTIF(A2,"aa-*")+COUNTIF(A2,"bb-*")
区分大小写的验证公式
如果字符的大小写很重要,那么就使用EXACT与LEFT函数相结合,为以特定文本开始的条目创建一个大小写敏感的验证公式。
EXACT(LEFT( 电池 , 字符数 ), 文本 )例如,为了只允许那些以 "AA-"开头的订单ID(既不允许 "aa-"也不允许 "Aa-"),使用这个公式。
=exact(left(a2,3), "aa-")
在上面的公式中,LEFT函数从A2单元格中提取前3个字符,EXACT与硬编码的子串(本例中为 "AA-")进行区分大小写的比较。 如果两个子串完全匹配,公式返回TRUE,验证通过;否则返回FALSE,验证失败。
允许包含某些文本的条目
要允许在单元格的任何地方(开头、中间或结尾)包含特定文本的条目,请根据您想要的大小写敏感或不敏感的匹配,将ISNUMBER函数与FIND或SEARCH结合使用。
- 不区分大小写的验证: ISNUMBER(SEARCH( 文本 , 电池 ))
- 对大小写敏感的验证:ISNUMBER(FIND( 文本 , 电池 ))
在我们的样本数据集上,为了只允许在A2:A6单元格中包含文本 "AA "的条目,请使用这些公式之一。
不区分大小写。
=isnumber(search("aa", a2))
大小写敏感。
=isnumber(find("aa", a2))
这些公式的工作逻辑如下。
你在A2单元格中使用FIND或SEARCH搜索子串 "AA",两者都返回子串中第一个字符的位置。 如果没有找到该文本,则返回错误。 对于作为搜索结果返回的任何数字值,ISNUMBER函数产生TRUE,数据验证成功。 如果出现错误,ISNUMBER返回FALSE,该条目将不允许出现在单元格中。
数据验证,只允许唯一的条目,不允许重复的。
在某一列或某一单元格范围不应包含任何重复的情况下,配置一个自定义数据验证规则,只允许唯一的条目。 为此,我们将使用经典的COUNTIF公式来识别重复。
=COUNTIF( 范围 , 最上面的单元格 )<=1例如,为了确保只有唯一的订单ID被输入到A2到A6单元格,用这个数据验证公式创建一个自定义规则。
=COUNTIF($A$2:$A$6, A2)<=1
当输入一个唯一的值时,该公式返回TRUE,验证成功。 如果相同的值已经存在于指定的范围内(计数大于1),COUNTIF返回FALSE,输入验证失败。
请注意,我们用绝对的单元格引用(A$2:$A$6)来锁定范围,并对最上面的单元格(A2)使用相对引用,以使公式对验证范围内的每个单元格进行适当调整。
注意:这个数据验证公式是 不区分大小写 意思是,它不区分大写和小写文本。
日期和时间的验证公式
内置的日期验证提供了相当多的预定义标准,以限制用户只输入你指定的两个日期之间的日期,大于、小于或等于一个给定的日期。
如果你想对工作表中的数据验证进行更多的控制,你可以用自定义规则复制内置的功能,或者编写自己的公式,超越Excel数据验证的内置功能。
允许两个日期之间的日期
要将条目限制在指定范围内的日期,你可以使用预定义的带有 "之间 "条件的日期规则,或者用这个通用公式制定一个自定义验证规则。
和( 电池 >= 开始日期 ), 电池 <= 结束日期 )在哪里?
- 电池 是验证范围内最顶层的单元格,而
- 开始 和 结束 日期是通过DATE函数提供的有效日期或对包含日期的单元格的引用。
例如,为了只允许在2017年7月的日期,使用以下公式。
=AND(C2>=DATE(2017,7,1),C2<=DATE(2017,7,31))
或者,在一些单元格(本例中为F1和F2)中输入开始日期和结束日期,并在公式中引用这些单元格。
=AND(C2>=$F$1, C2<=$F$2)
请注意,边界日期是用绝对的单元格引用锁定的。
只允许在工作日或周末
要限制用户只输入工作日或周末,请根据WEEKDAY函数配置一个自定义验证规则。
随着 返回类型 因此,对于工作日(周一至周五),公式的结果应该小于6,而对于周末(周六和周日)则大于5。
只允许 工作日 :
周日( 电池 ,2)<6只允许 周末 :
周日( 电池 ,2)>5例如,如果只允许在单元格C2:C6中输入工作日,请使用这个公式。
=WEEKDAY(C2,2)<6
根据今天的日期来验证日期
在许多情况下,你可能想用今天的日期作为允许的日期范围的开始日期。 要获得当前日期,使用TODAY函数,然后在其上添加所需的天数来计算结束日期。
例如,为了将数据输入限制在从现在开始的6天内(包括今天在内的7天),我们将使用内置的日期规则和基于公式的标准。
- 选择 日期 在 允许
- 选择 之间 在 数据
- 在 开始日期 框中,输入
=TODAY()
- 在 结束日期 框中,输入
=TODAY() + 6
以类似的方式,你可以限制用户输入今天之前或之后的日期。 为此,选择以下两种方式之一 不到 或 大于 在 数据 框,然后输入 =TODAY()
在 结束 日期或 开始 日期框,分别为。
根据当前时间验证时间
要根据当前时间验证数据,请使用预定义的时间规则和你自己的数据验证公式。
- 在 允许 框,选择 时间 .
- 在 数据 框,选择其中一个 不到 只允许当前时间之前的时间,或 大于 以允许当前时间之后的时间。
- 在 结束时间 或 开始时间 框(取决于你在上一步选择的标准),输入以下公式之一。
- 为了验证 日期和时间 基于当前的日期和时间。
=NOW()
- 为了验证 时间 基于当前时间。
=time( hour(now()), minute(now()), second(now() ))
- 为了验证 日期和时间 基于当前的日期和时间。
下面的截图显示了一个只允许大于当前时间的规则。
自定义Excel数据验证规则不工作
如果你的基于公式的数据验证规则不能按预期工作,有3个主要的检查点。
- 数据验证公式是正确的
- 验证公式没有提到一个空单元格
- 使用了适当的单元格引用
检查你的Excel数据验证公式的正确性
首先,将你的验证公式复制到一些单元格中,确保它不会返回错误,如#N/A、#VALUE或#DIV/0!。
如果你正在创建一个 自定义规则 ,该公式应分别返回TRUE和FALSE的逻辑值或相当于它们的1和0的值。
如果你在某一文件中使用一个基于公式的标准 内置规则 (就像我们根据当前时间来验证时间一样),它也可以返回另一个数字值。
Excel数据验证公式不应提及空单元格
在许多情况下,如果你选择 忽略空白 在定义规则时,如果你的公式中引用的一个或多个单元格是空的(通常是默认选择),则允许在验证的单元格中使用任何值。
下面是一个最简单的例子。
数据验证公式中的绝对和相对单元格引用
在设置基于公式的Excel验证规则时,请记住,公式中的所有单元格引用都是 相对于左上角的单元格 在选定的范围内。
如果你为一个以上的单元格创建规则,而你的验证标准又取决于 特定细胞 ,请确保使用绝对的单元格引用(带$符号,如$A$1),否则你的规则将只对第一个单元格正确工作。 为了更好地说明这一点,请考虑以下例子。
假设你想把D2到D5单元格的数据输入限制在1(最小值)和A2除以B2的结果之间的整数。 因此,你用这个简单的公式计算出最大值 =A2/B2
如下面的截图所示。
问题是这个看似正确的公式对D3至D5单元格不起作用,因为相对引用是根据行和列的相对位置改变的。 因此,对于D3单元格,公式将变为 =A3/B3
,而对于D4来说,它将成为 =A4/B4
错了,做数据验证都错了!
要修复该公式,只需在列和行的参考文献前输入"$"来锁定它们。 =$A$2/$B$2
或者,按F4在不同的参考类型之间进行切换。
在你想根据每个单元格的标准来验证的情况下,使用不带$符号的相对单元格引用来获得公式,以调整每一行或/和每一列。
正如你所看到的,没有 "绝对真理",同样的公式可能是正确的或错误的,这取决于情况和你的特定任务。
这就是如何在Excel中使用自己的公式进行数据验证。 为了获得更多的理解,请随时下载我们下面的样本工作簿,并检查规则设置。 感谢你的阅读,希望下周在我们的博客上见到你。
供下载的实践工作手册
Excel数据验证实例(.xlsx文件)。