list获取重复数据_【玩转数据有效性】用VBA制作多级关联下拉列表

46d52dc88010ff5ba0f0acac2a5dec19.png

d5549dc036bce45efcffe3568c16d936.png

数据有效性可以产生下拉列表,那么是否可以产生相互关联的多级下拉列表呢?

类似如下效果:

b3977ac44c30410d0f792322b2683815.gif
三级关联下拉菜单

答案是完全可以的。

数据有效性配合函数也可做出这种效果,这篇文章只讲解用VBA的方式实现相互关联的多级下拉列表。

▷看一下数据源:

假如我们手里的数据源是这样的。

15002dee103f749d392352bcc84136c4.png

▷解决思路:

因为省份和城市都存在重复字段,我们需要去重复再设置数据有效性。

『用字典对象获取省份名称去重复作为数据有效性序列的来源,完成一级下拉列表;同样,利用字典将市名去重复后作为二级下拉列表;三级下拉列表同样的办法。』

因为要实现联动的效果,所以我们要结合工作表事件Worksheet_SelectionChange来完成。

▷代码及知识点:

就不拿代码凑字数了,附件公众号(ID:todayvba)后台回复“有效性”获取。

72669d32606880161a779c6d074eb34c.png
代码栗子

▷几个小知识点

■Join函数

语法

通俗来讲,Join函数就是把一维数组每个元素通过某个设定的字符串连接起来成为一个字符串。和它作用相反的函数是split函数。

641f4a574194b0a3c397f6398ef1f2a9.gif
代码栗子

■Offset函数

代码中多次用到offset函数,主要就是因为是对B列省份数据做的循环,需要用Offset函数来获取同一行市名和县名数据。

语法:Range.Offset(行偏移数,列偏移数)
参数说明:
•行偏移  -  正数,负数,零值(或者不写),正代表向下偏移,负数向上。
•列偏移  -  正数,负数,零值(或者不写),正代表向右偏移,负数向左。

注意:偏移的只是位置,单元格或者单元格区域内容不会跟着移动。

ee22fe3669a7130e93762d058f3b2432.png
代码栗子

•设置数据有效性部分代码

录制宏得到,这么难的代码谁记得住,用到时候录制一下即可。

推荐阅读:

你的小黄鸭来了~ | 操作Txt | VBA学习经验 | 合并拆分 | 字符串函数 | 循环知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值