跳至主要內容

数据约束

Caryam...大约 3 分钟

参考文章data-validationopen in new window

整数约束

选中目标单元格,然后点击在数据选项卡中的数据工具组的数据验证按钮,按下图填写信息:
整数约束弹窗配置
这时,单元格就只能输入1到10的整数,否则会报错。

为了提示用户输入要求,我们可以在上图的弹窗的输入信息选项卡中填写提示信息:
输入提示
这时,当选中该单元格时,提示信息会显示出来:
输入提示弹窗

我们尝试输入不符合要求的数值,会得到以下错误警告:
错误警告
显然这个错误提示不够明确,我们可以自定义错误提示,让用户更易于理解:
错误警告自定义
这时,我们再输入不符合要求的数值时,会发现错误警告已经按要求改变了:
自定义错误警告弹窗
到这里,基本的数据验证的流程我们都过了一遍了,所有数据类型的约束都是这样设置的。

日期约束

我们只要把允许的值设置为日期就可以了,值得注意的是范围值可以使用公式,请看下图:
日期约束配置

自定义约束

下面展示的是用自定义约束实现的强制输入工作日的星期表示。
自定义约束配置
具体公式是:

=AND(WEEKDAY(B1)<>1, WEEKDAY(B1)<>7) // B1是目标单元格

序列约束

序列约束可以展示下拉选项供用户选择,具体步骤如下:

  1. 新建/打开一个工作表Sheet2,在A1列依次输入选项:
    序列约束选项
  2. 回到Sheet1,在目标单元格(假设是B1)中添加序列约束:
    序列约束基本配置
    这样就配置完成了。不过有时我们只是希望给出常用选项,并不强制用户输入序列中的值,这时我们通过可以忽略错误警告来实现。
    忽略错误警告

补充

  1. 当我们需要增加选项时,不需要再次在数据验证弹窗更改,只要在选项之间插入选项即可,软件会自动更改范围。
    序列增加
    注意的是,不能在原选项下方插入,一定要在他们之间插入选项。
  2. 我们也可以通过以下公式实现:
=OFFSET(Sheet2!A1, 0, 0, COUNTA(Sheet2!A1:A1), 1)

联动序列约束

这个功能其实就是多级联动菜单的功能,这里只介绍二级联动序列的实现。
假定我们现在要实现省市的联动序列,我们可以通过一下步骤实现:

  1. 在Sheet2表的A列依次列出所有省的选项,从B列开始每列依次单独列出各省所有地级市的选项
  2. 为每个省名创建命名范围(named range),名称就是该省选项名,值就是对应地级市所在范围
  3. 回到Sheet1,在A1输入“省”文本;在B1创建省的序列约束,值为
=OFFSET(Sheet2!A1, 0, 0, COUNTA(Sheet2!A1:A1), 1)
  1. 在C1输入“市”文本;在D1创建市的序列约束,值为
=INDIRECT(B2)

这样,一个二级联动下拉菜单就完成了。

美中不足的是选项没有默认值(显示为空值),每次一个菜单选项改变时,相关的其它菜单选项不会相应改变。为了实现这一点,就要使用VBA针对单元格变换事件open in new window进行相应的逻辑处理。

现在,我们在Sheet1表中新增一个宏,具体内容如下:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$1" Then
	    Range("$D$1").Value = ThisWorkbook.Names(Range("$B$1").Value).RefersToRange.Cells(1, 1).Value
    End If
End Sub

这时,更改省选项时,对应的地级市选项会自动设置为该省的第一个地级市选项。

上次编辑于:
贡献者: cary-mao
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7