ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何根据县市区匹配所在省市县区

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-3-14 15:02 | 显示全部楼层
KCFONG 发表于 2013-11-10 21:37
see if fit your request

K大,小弟用了您给的这个 匹配省市县区(再次求助)V1,得到的结果如下,想请教如何把“剩余的地址”也输出在提取省市那一栏。比如图中原地址:“地址:210007江苏省南京市御道街53号“,提取之后变为”江苏省南京市市辖区御道街53号“,而不是”江苏省南京市市辖区”。谢谢大神



QQ图片20160314145941.png

TA的精华主题

TA的得分主题

发表于 2016-4-6 12:48 | 显示全部楼层
本帖最后由 heilangps 于 2016-4-6 12:54 编辑

KCFONG老师您好,我用了您这个匹配省市县区1次修改 v1.rar的文件,另存为07启用宏的格式之后,少量数据还是正常使用,当我将户名栏输入100W条数据后,点击提取省市就完全没有反应了,不会出现结果,我在宏里面把65536改成了1000000,但是没有用,想请教您应该怎么办?
1.png

TA的精华主题

TA的得分主题

发表于 2016-4-30 20:19 | 显示全部楼层
heilangps 发表于 2016-4-6 12:48
KCFONG老师您好,我用了您这个匹配省市县区1次修改 v1.rar的文件,另存为07启用宏的格式之后,少量数据还 ...

应该是使用了工作表函数transpose。为兼容旧版,工作表函数transpose引用数组的最大行数为65536。要解决这样的问题,就直接用数组+循环处理来转置数据。

TA的精华主题

TA的得分主题

发表于 2016-6-12 18:49 | 显示全部楼层
cbtaja 发表于 2016-4-30 20:19
应该是使用了工作表函数transpose。为兼容旧版,工作表函数transpose引用数组的最大行数为65536。要解决 ...

好的,谢谢大神

TA的精华主题

TA的得分主题

发表于 2019-11-19 10:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
正则提取省市县

TA的精华主题

TA的得分主题

发表于 2020-3-25 10:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
chxw68 发表于 2013-11-11 09:56
我是用正则表达式做的,准确率高,但不能模糊匹配,供参考。

老师能帮忙指导一下么?入门菜鸟一枚,我用的您这种方式套上去在地址中取市,但是到If reg.test(arr2(i, 1)) Then 这里就中断了,没看明白是什么原因。明细表中O列为地址,如“”辽宁省大连市中山区**“、”北京朝阳区“、”西藏自治区山南市”,P列为取出的市~行政代码表中M列为国家行政地区市为嘛这里回复不能上附件的,好尴尬~~
代码:
Dim reg As Object
Dim arr1, arr2
Dim r1, r2, i, j
Set reg = CreateObject("vbscript.regexp")
arr1 = Sheets("明细表").Range("O2:P" & Cells(Rows.Count, "O").End(xlUp).Row)
arr2 = Sheets("行政代码表").Range("M2:M" & Cells(Rows.Count, "M").End(xlUp).Row)
r1 = UBound(arr1)
r2 = UBound(arr2)
reg.Global = False
fla = False
For i = 2 To r2
fla = False
For j = 2 To r1
reg.Pattern = arr1(j, 1)
If reg.test(arr2(i, 1)) Then
arr1(i, 2) = arr2(i, 1)
End If
Next j
Next i

TA的精华主题

TA的得分主题

发表于 2020-11-3 16:13 | 显示全部楼层
度娘到了这里,没解决问题,但是找到了个插件能解决这个问题了,留给大家备用。
Excel精灵,http://www.excelbbx.net/

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-1-14 21:35 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-10-30 10:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
更新了数据源,在前辈的代码中更新了部分代码,支持精确及模糊查找。请看附件
匹配.png
匹配省市县区 v2(2023年版).rar (138.63 KB, 下载次数: 24)




评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-10-10 14:12 | 显示全部楼层
ifrogz 发表于 2023-10-30 10:06
更新了数据源,在前辈的代码中更新了部分代码,支持精确及模糊查找。请看附件

请教大神,这里是不是有内置的省市县列表,请问怎么能找到并修改。有些不带“市”“县”字样的项目名称,想匹配到省,请问怎样调整代码呢?谢谢大神
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 16:25 , Processed in 0.041605 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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