数据准备
- 准备省份-城市映射数据,如下:
新建sheet页,命名为:省-市数据源,然后准备数据,如下所示:
- 准备城市-区|县映射数据,如下:
新建sheet页,命名为:市-区|县数据源,然后准备数据,如下所示:
数据管理
数据准备完成之后,将映射数据装入名称管理器,如下:
- 选中所有(鼠标点击第一行、第一列,然后ctrl+A)
- 点击“公式”
- 选择“指定”
- 弹窗弹出后,将“最左列”前面的√去掉,然后点击确认
- 执行完以上操作后,可查看数据是否加入“名称管理器”
- 点击公式、点击名称管理器,即可查看
按照以上步骤,将“市-区|县数据源”中的数据也加入名称管理器
引用数据源实现级联
-
实现省份下拉选择
新建sheet页,命名为 “省-市-区|县级联” ,然后按照如图初始化表格:
鼠标移入A2中,点击“数据”,点击“有效性”
允许选择“序列”,然后点击如下图的小图标
小图标点开之后,展示如下,此时我们去选择省份数据
上图的样子保持,不要叉掉 ,sheet页切换到 省-市数据源
此时,我们选择第一行所有列,鼠标移动到1,点击即可
如上图操作完成后,回车、再确定
则省份下拉实现完成
-
实现城市下拉选择
省份下拉实现完成后,城市级联下拉就非常容易了,鼠标移入B2,点击数据,点击有效性,允许选择“序列”
此时在来源中输入:
=INDIRECT(A2)
括号中的值就是省份所在的表格,点击确定
则按照如上图操作后,即可实现省份-城市级联
- 实现区|县下拉选择
区|县级联下拉与城市一样,鼠标移入C2, 点击数据,点击有效性,允许选择 “序列”
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a539b2ceef5
c4c73bc0c61376361109c.png)
此时在来源中输入:
=INDIRECT(B2)
括号中的值就是城市所在的表格,点击确定
实现省份切换、城市、区|县自动清空,城市切换、区|县自动清空
实现省份切换、城市、区|县自动清空,城市切换、区|县自动清空 需通过VB编程
选择 开发工具、选择 VB编辑器
打开之后,鼠标点击 “省-市-区|县级联” 的菜单,然后输入如下图所示代码
Public sourceVal
Private Sub Worksheet_Change(ByVal Target As Range)
'判断是否等于历史
If sourceVal <> Target.Text Then
If Target.Column = 1 Then
Range("B" + CStr(Target.Row)).ClearContents
Range("C" + CStr(Target.Row)).ClearContents
ElseIf Target.Column = 2 Then
Range("C" + CStr(Target.Row)).ClearContents
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
sourceVal = Target.Text
End Sub
代码输入完成之后,CTRL+S 保存,关闭编辑器,即可实现省份切换、城市、区|县自动清空,城市切换、区|县自动清空