ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 796|回复: 8

[分享] VBA 行政区划四级下拉菜单

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-19 14:00 | 显示全部楼层 |阅读模式
本帖最后由 NoooEnd 于 2023-3-19 14:06 编辑
  1. Function selectList(stage)
  2.     Dim areaList As Object
  3.     Set areaList = CreateObject("scripting.dictionary")
  4.     Dim tier1, tier2
  5.     Dim tier2s(), region
  6.     Dim rowNum
  7.     rowNum = ThisWorkbook.Worksheets(1).UsedRange.Rows.Count
  8.     region = ThisWorkbook.Worksheets(1).Range("A2:D" & rowNum)
  9.     Select Case stage
  10.         Case "省"
  11.             col = "1"
  12.         Case "市"
  13.             col = "2"
  14.         Case "县"
  15.             col = "3"
  16.     End Select
  17.     For i = 1 To UBound(region)
  18.         tier1 = region(i, col)
  19.         tier2 = region(i, col + 1)
  20.         If Not areaList.exists(tier1) Then
  21.             ReDim tier2s(1 To 1)
  22.             tier2s(1) = tier2
  23.             areaList.Add tier1, tier2s()
  24.         Else
  25.             tier2s() = areaList(tier1)
  26.             If UBound(VBA.Filter(tier2s(), tier2)) < 0 Then
  27.                 qty = UBound(tier2s())
  28.                 ReDim Preserve tier2s(1 To qty + 1)
  29.                 tier2s(qty + 1) = tier2
  30.                 areaList(tier1) = tier2s()
  31.             End If
  32.         End If
  33.         Erase tier2s()
  34.     Next
  35.     Set selectList = areaList
  36. End Function
复制代码



四级区域下拉菜单.zip

1 MB, 下载次数: 104

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-19 20:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
若能将车牌号再加上就更适用了。如:
河北 [ 冀 ]
A 石家庄市  B 唐山市  C 秦皇岛市  D 邯郸市  E 邢台市  F 保定市
G 张家口市  H 承德市  J 沧州市  R 廊坊市  T 衡水市
image.png

TA的精华主题

TA的得分主题

发表于 2023-3-19 21:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请问数据来源和获取日期可以告知一下吗,谢谢~

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-19 22:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
morpheus126 发表于 2023-3-19 21:00
请问数据来源和获取日期可以告知一下吗,谢谢~

有大佬开源的数据,最近更新的是2月份的数据

AreaCity 省市区县乡镇行政区划数据 + 坐标边界范围矢量数据

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-19 22:35 | 显示全部楼层
学良 发表于 2023-3-19 20:48
若能将车牌号再加上就更适用了。如:
河北 [ 冀 ]
A 石家庄市  B 唐山市  C 秦皇岛市  D 邯郸市  E 邢台 ...

嗯,如果有数据源的话只需要加一列就可以了,代码只需要稍微追加一下就可以了

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-20 08:17 | 显示全部楼层
回五楼:这是两天前下载的,你看一下吧!
全国牌照号.zip (16 KB, 下载次数: 45)

TA的精华主题

TA的得分主题

发表于 2023-3-20 10:03 | 显示全部楼层
NoooEnd 发表于 2023-3-19 22:25
有大佬开源的数据,最近更新的是2月份的数据

AreaCity 省市区县乡镇行政区划数据 + 坐标边界范围矢量 ...

3207条数据,我还在用2989条的,还不敢随意更新,感觉最新的数据未必好,刚看了一下老客户的地址有些地址一直在用某开发区,这个3207的数据中却已经去除掉了。

但是呢...这个最新的数据我先拿走啦!对于对我有帮忙的人,我从来都是相当的感谢。

TA的精华主题

TA的得分主题

发表于 2023-3-20 21:03 | 显示全部楼层
NoooEnd 发表于 2023-3-19 22:35
嗯,如果有数据源的话只需要加一列就可以了,代码只需要稍微追加一下就可以了

数据源在六楼,请加一列吧。谢谢!

TA的精华主题

TA的得分主题

发表于 2023-4-4 11:47 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-29 10:28 , Processed in 0.035691 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表