乐福学长说:做表最怕的不是公式复杂,而是”数据太脏”——表格拿回来一看,性别栏里有”男1″、日期栏写着”2026.9.1″、手机号少一位,统计结果全是错的。Excel 里其实有个一直被低估的开关叫数据验证(WPS 里叫”有效性”):它能在录入时就拦住错误,还能让单元格只从你给的下拉列表里选。这篇从基础下拉讲到多级联动、从限制数字日期讲到自定义公式校验,最后教你用”圈释无效数据”把已存在的脏数据全标出来。配一张埋好”坑”的练习表,照着做完,数据门禁就装上了。
适用人群:需要做数据收集表、录入表、台账的人(行政/人事/财务/运营/学生)
难度:★★☆☆☆
关键词:excel数据验证、excel下拉列表、数据有效性、联动下拉、excel防输错
一、数据验证是什么:给录入装一道”门禁”
数据验证(Excel 2016/2019/2021/365 叫”数据验证”,WPS 表格叫”数据有效性”,功能一致)做的事情很简单:规定某个单元格里只能出现什么内容。符合规则才放行,不符合就弹窗拒绝,或者只是提醒。
典型用途:
- 下拉列表:性别、部门、城市、状态(已发货/待发货)等固定选项,点箭头直接选,不用手打。
- 范围限制:入职日期只能在某段时间内;折扣率只能填 0~1;手机号必须 11 位。
- 自定义规则:身份证不能重复、B 列和 A 列不能相等、首字母必须大写……
一句话:数据验证让”谁填这张表”都只能按你的规矩填,从源头消灭脏数据。
二、基础入门:做一个下拉列表
这是最常用、也最能立刻见效的一招。以”性别”列为例:
- 选中要加下拉的单元格区域(比如 E2:E101)。
- 顶部菜单 数据 → 数据验证(WPS 是”有效性”)。
- 在对话框 设置 选项卡,允许下拉选 序列。
- 来源里填选项,两种写法任选其一:
- 直接写:
男,女(选项用英文逗号分隔,注意是英文半角逗号)。 - 引用区域:点来源框右侧的箭头,直接框选”性别名单”列区域(如
=$M$2:$M$3),以后改名单,下拉自动更新。
点确定后,单元格右侧出现小箭头,点击就能从列表里选,手打”男1″这类错字根本输不进去。
什么时候用”直接写”、什么时候用”引用区域”?选项固定且不多(男/女)就直接写;选项可能增删(部门、城市名单)就引用区域,改名单不用改验证。
三、多级联动下拉:选了省份,城市自动跟着变
做地区填写时最想要的效果是:A 列选了”广东省”,B 列的下拉里只剩”广州、深圳、东莞、佛山”,选”浙江省”就变成”杭州、宁波、温州、绍兴”。这就是联动下拉,用到两个函数/工具:命名区域 + INDIRECT 函数。
做法分三步(以省份→城市为例):
- 准备城市名单:在空白区域(比如 H1:J5)按列排好:H 列写”广东省”,下面 H2:H5 填广州、深圳、东莞、佛山;I 列写”浙江省”,I2:I5 填杭州、宁波…每个省份占一列。
- 逐个命名:选中”广东省”下方的城市单元格区域(H2:H5)→ 公式选项卡 → 定义名称,名称填
广东省。浙江、江苏等各省重复操作,让”名称 = 省份名”。 - 两级验证:A 列(省份)加序列验证,来源引用省份名单区域;B 列(城市)加序列验证,来源填公式
=INDIRECT($A2)——意思是”按 A2 里选的省份名,去找同名名称区域里的内容当选项”。
这样 A 列一换省份,B 列下拉自动切换成对应城市。逻辑记住一句:省份名既是选项,又是城市名单的名称,INDIRECT 负责把名字变成引用。
四、限制数字、日期与文本长度
不是所有列都适合下拉——数量、日期、编号这类”需要自由输入但不能乱输”的列,用允许条件限制:
| 想限制的内容 | 允许条件选 | 条件示例 |
|---|---|---|
| 整数(数量、人数) | 整数 | 介于 1 到 1000 |
| 百分比、比率 | 小数 | 介于 0 到 1 |
| 日期范围 | 日期 | 介于 2026-01-01 到 2026-12-31 |
| 固定位数编号 | 文本长度 | 等于 11(手机号) |
| 限定开头 | 自定义 | 见下一节 |
以”手机号必须 11 位”为例:选中手机号列 → 数据验证 → 允许选 文本长度 → 数据选”等于” → 长度填 11。之后谁填 10 位或 12 位,Excel 直接拒绝。
日期同理:入职日期列 → 允许选 日期 → 介于两个日期之间,把”2026.9.1″这类文本日期挡在门外。
五、自定义公式校验:不重复、身份证位数、跨列比对
允许条件里选 自定义,然后在公式框写一个”结果为 TRUE 才放行”的公式——这是数据验证最强的一档,几乎什么规则都能写:
- 整列不允许重复(身份证号):选中 C2:C101 → 自定义 → 公式
=COUNTIF($C$2:$C$101,C2)=1,重复身份证号会被拦下。 - 身份证必须 18 位:
=LEN(C2)=18。 - B 列(城市)必须等于 A 列(省份)下的合法值:配合 INDIRECT 写
=ISNUMBER(MATCH(B2,INDIRECT($A2),0)),防”省份广东、城市写北京”。 - 首列大写字母开头(编码列):
=EXACT(LEFT(D2,1),UPPER(LEFT(D2,1)))。
注意两个细节:公式里的相对引用要跟随单元格(C2 而不是 $C$2 锁死),范围锁死($C$2:$C$101);自定义公式对”空白单元格”也会校验,需要允许留空的勾上”忽略空值”。上面这些校验公式用到的函数(COUNTIF、LEN、MATCH 等)用法记不准时,翻一下这份按功能分类的Excel 函数大全就能查到。
六、提示信息与出错警告:填表人看得懂
默认的报错弹窗很生硬(”此值与此单元格定义的数据验证限制不匹配”),填表人根本不知道错在哪。数据验证里还有两个选项卡可以写得人话化:
- 输入信息:点中单元格时,旁边弹出提示气泡,比如”手机号请输入 11 位数字”。
- 出错警告:分三种强度——
- 停止:直接拒绝,只能点”重试/取消”(默认,最严格)。
- 警告:弹窗问”是否继续?”,点”是”仍能强行输入(适合有少量例外的列)。
- 信息:只提示不拦截,怎么输都行(适合”建议性”规则)。
实操建议:严格必填的(手机号、身份证)用停止;允许特例的(备注类)用警告;标题栏样式统一用信息。填表人体验会好很多,也会更配合规则。
七、管理数据验证:复制、清除与圈释无效数据
验证做好之后还有几个常用操作,尤其是对付已经存在的脏数据:
- 把验证复制到更多行:复制已设验证的单元格 → 粘贴到下方空行(Ctrl+V 会把验证一起带过去);或先选中整个区域再设置一次。
- 清除验证:选中区域 → 数据验证 → 点”全部清除”。
- 查找哪里有验证:开始 → 查找和选择 → 定位条件 → 选”数据验证”(”全部”或”相同”),一次性选中所有带验证的单元格。
- 圈释无效数据:这是揪脏数据的利器——数据 → 数据验证右侧下拉 → 圈释无效数据。Excel 会用红圈把”不符合当前验证规则”的单元格(比如 10 位手机号、格式不对的日期)全部圈出来,一眼看清哪里脏。
- 删除红圈:同一菜单选”清除验证标识圈”。
八、FAQ
Q1:加了下拉列表后,单元格右侧的箭头不见了?
Q2:下拉选项想加一个新选项(比如新部门),怎么改?
Q3:复制粘贴时,怎么让”数据”不带验证一起过去?
Q4:WPS 表格里能做联动下拉吗?
一句话记住
数据验证四件套:序列做下拉(固定选项)、INDIRECT 做联动(省→市)、允许条件限范围(数字/日期/长度)、自定义公式兜底(不重复/位数/跨列)。做完再用”圈释无效数据”把老数据洗一遍,脏数据的源头和存量一起解决。
最后更新:2026年10月14日 | 基于 Excel 365 / 2021(WPS 表格可参考)

