在excel实现多级联动
最近做了一个Excel的多级联动的功能,具体是将全国所有的气象局按一二三四级单位做成四列,实现各级的联动下拉选择,这和省市县乡的各级联动的功能基本一样,下面记录下具体的操作步骤。
1、首先需要从数据库中将所有单位按照Id ,父级ID ,单位名称,导出excel,
2、将所有单位中的一级单位单独取出作为新的一列放置。我这里的操作方法是用excel中的VBA进行编码操作。前提是excel需要启用宏设置,下面是启用宏设置的方法:
(1)将excel另存为启用宏的工作簿 然后打开保存的启用宏的工作簿
(2)点击左上方的文件-选项-信任中心-信任中心设置-宏设置-启用-确认
3、点击一个sheet 邮件选择查看源码
4、按图示插入窗体和按钮修改按钮的名称为一级单位
6、双击按钮或者右键查看代码 就能够编写点击这个按钮以后需要做的工作的代码了 ,瞬间感觉这个操作和.net的winform差不多
7编写代码 将一级单位名称,一级单位Id,因为一级单位的父ID是同一个,所以这里就不把他的父Id给单独拿出来了
8、同样添加二级单位。三级单位、四级单位的按钮,分别添加对应的代买,因为其中的代码基本一样,只是取得列和父Id的列不一样,这里就只贴出二级单位的代码
9.添加完以后点击运行,分别点击各个单位的按钮,就在sheet1中自动生成了对应单位级别的列,并将对应的单位给填充进对应的列上。
10、到这里前期准备工作就完成了,接下来在excel公式中点击名称管理器,添加一级单位的名称和对应的取值范围。
11、选中对应一级单位的单元格,点击数据下面的数据验证,在设置中的验证条件选中允许,来源=刚才设置的名称管理器中的名称,此时选中的单元格就会出现下拉框选择,选择的内容就是设置名称管理器中的一级单位对应的引用位置(取值范围)
12、接下来我们添加二级三级四级单位的名称,由于一级单位数量相对比较少,也比较连续,上面添加名称的方式比较简单,但是下级单位比较多,添加起来就比较麻烦,并且所属的父级单位需要一个一个的找,工作量比较大,所以这里还是用VBA代码将剩下添加名称的动态的给添加上,这样就减少了很大的工作量,继续在窗体中添加按钮,修改名称,双击查看对应的操作代码,添加代码,这里同样贴出一个代码样例。是生成二级名称的
13、选中对应二级单位对应的单元格,点击数据有效性,设置和一级单位基本一样,不过来源那里需要根据选中的一级单位的名称进行筛选,使用=INDIRECT($A3),其中$A3为一级单位所选择的名称,INDIRECT函数返回指定的区域,依次类推,剩下级别的单位也这样设置
致此,所有的工作已经做完。我们来看下效果:
注意事项:二级、三级单位必须是按上级单位的顺序排列,否则数据取起来会不准确。也比较麻烦,这个demo给大家做一个参考,希望对以后或者其他的工作有所帮助