最近做了一个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给大家做一个参考,希望对以后或者其他的工作有所帮助

最新文章

  1. easyUI的基础布局
  2. lua table integer index 特性
  3. Python模块和包
  4. 下拉框QComboBox相关函数
  5. 转载C#中堆(heap)和栈(stack)的区别
  6. 孤陋寡闻又一遭:ReportEvent API函数(有微软Service官方例子为例)
  7. Neral的前言
  8. tableview 代理方法详解
  9. 关于eclipse创建Maven项目创建的问题
  10. springboot的war和jar包
  11. 【EMV L2】终端验证结果(Terminal Verification Results,TVR)
  12. Android中屏幕保持唤醒
  13. python魔法函数之__getattr__与__getattribute__
  14. K Besk [POJ 3111]
  15. Javascript正则表达入参是null
  16. 简单Promise回顾
  17. 一分钟了解Android横竖屏 mdpi hdpi xhdpi xxhdpi xxxhdpi (转)
  18. Cooperate with Myself
  19. mktime 和 TZ
  20. Eureka的原理

热门文章

  1. m0n0防火墙安装配置方法
  2. BeyondCorps
  3. SpringBoot中使用Jackson将null值转化为""或者不返回的配置
  4. PHP将图片转base64格式函数
  5. Git的小疑惑
  6. java生成前端验证码+验证「kaptcha」
  7. MongoDB executionStats 详细分步查询计划与分步时间(转载)
  8. ESA2GJK1DH1K升级篇: 远程升级准备工作: 安装Web服务器
  9. 【BZOJ3508】开灯
  10. ECMAScript6-1