数据有效性用于在单元格中选择性输入或限制在单元格中输入某些类型的数据。使用数据有效性可以控制用户输入到单元格的数据或值的类型,以保证第一章中所述的数据的“一致性”“规范性”。
数据有效性有如下功能:
(1)限制只录入符合规则的数据。
(2)选中单元格时自动提示。
(3)录入无效数据时发出警告。
(4)自动切换输入法。
下面主要介绍如何设置规则对录入的数据进行限制。
点击【数据】选项卡的数据工具栏中的“数据有效性”按钮,会弹出数据有效性对话框,然后在有效性条件设置“允许”的类型,可设置的类型有:任何值、整数、小数、序列、日期、时间、文本长度、自定义。下面主要介绍序列和自定义。
1.允许输入“序列”中的数据
在【数据】选项卡上的“数据工具”组中,单击“数据有效性”按钮。在“数据有效性”对话框中,单击“设置”选项卡,点击“允许”的下拉箭头,将允许的类型设置为“序列”,根据情况设置是否忽略空值、是否提供下拉箭头。
在“来源”框中输入规定的数据序列,各列表项目之间用英文逗号分隔,如图3-32所示。
也可以通过引用工作簿中其他位置的单元格区域来创建列表项,比如在来源框中输入=Sheet2!$A$1:$A$8。
如果需要在输入的数据不符合要求时进行提示,那么可在数据有效性对话框的“出错警告”选项进行设置。如图3-33所示。
如果输入了不符合要求的数据,则会弹出出错警告提示,如图3-34所示。
2.使用自定义规则限制输入的内容
如果限制的规则较复杂,不在功能选项卡直接提供的规则范围内,那就需要通过自定义规则来限制输入的内容。在【数据】选项卡上的“数据工具”组中,单击“数据有效性”按钮。在“数据有效性”对话框中,单击“设置”选项卡。在“允许”框中,选择“自定义”。然后在“公式”框中,输入计算结果为逻辑值(TRUE或FALSE)的公式。
为了方便介绍,本部分的示例均假定要设定有效性的单元格区域为A1:A10,且单元格A1处于激活状态,具体操作步骤如图3-35所示(部分函数的功能介绍可参见第四章相关内容)。
(1)只允许输入数值或文本。
限定单元格区域只能输入数值,数据有效性的公式为:
=ISNUMBER(A1)
限定单元格区域只能输入文本,数据有效性的公式为:
=ISTEXT(A1)
(2)不允许输入重复值。
不允许在A1:A10区域输入重复值,数据有效性的公式为:
=COUNTIF($A$1:$A$10,A1)<2
对上面的公式稍做修改将有效性条件设定为最多只允许出现两次,则公式为:
=COUNTIF($A$1:$A$10,A1)<3(3)仅允许输入特定格式的文本。
只允许输入以“罗”开始的文本,则数据有效性的公式为:
=LEFT(A1,1)="罗"
只允许输入类似“23-826”“ab-cde”的文本,则数据有效性的公式为:
=COUNTIF(A1,"??-???")=1
只能输入以“CQ”或“HN”开头的六个字符的文本,则数据有效性公式为:
=OR(AND(LEFT(A1,2)="cq",LEN(A1)=6),AND(LEFT(A1,2)="hn",LEN(A1)=6))
只允许输入包含“龙逸凡”的文本,则数据有效性公式为:
=COUNTIF(A1,"*龙逸凡*")=1
(4)不允许输入包含空格的文本。
正如第一章所述,如果文本中插入空格排版将影响查找功能引用公式的使用,因而有必要对输入的数据进行检验,限制输入包含空格的文本。其数据有效性公式为:
=(LEN(A1)-LEN(SUBSTITUTE((A1)," ","")))=0
更简单的公式为:
=NOT(COUNTIF(A1,"* *")=1)
或者:=COUNTIF(A1,"* *")=0
不允许输入前置空格,其数据有效性公式为:
=COUNTIF(A1," *")=0
不允许输入后缀空格,其数据有效性公式为:
=COUNTIF(A1,"* ")=0
(5)按大小顺序输入。
如果希望按升序(从小到大)顺序输入数据(日期或数字),则数据有效性公式为:
=MAX($A$1:A1)=A1
限定只能按降序(从大到小)顺序输入数据(日期或数字),则数据有效性公式为:
=MIN($A$1:A1)=A1。