ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-11-9 19:28 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 ugyun 于 2013-11-9 19:29 编辑

各位老师:
       如何完善本表中的代码,实现:点“提取省市”,根据A列户名中的县市区,在表“省市县代码对照表”中查找所在的省市县(区),将结果返回D列,代码已基本实现。
现在问题是,少数县市名很难完全匹配,例如黄色区域部分,每次提取都覆盖了原有的数据,现在想点“提取省市”,只提取非黄色区域的部分,黄色部分不覆盖

如何根据县市区匹配所在省市县区.jpg

匹配省市县区.zip (85.75 KB, 下载次数: 468)

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-11-10 09:29 | 显示全部楼层
哪位老师帮帮我,不然工作量太大

TA的精华主题

TA的得分主题

发表于 2013-11-10 10:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
I had 完善本表中的代码, please test

匹配省市县区 v1.rar

69.72 KB, 下载次数: 1324

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-11-10 20:11 | 显示全部楼层
KCFONG 发表于 2013-11-10 10:14
I had 完善本表中的代码, please test

KCFONG 老师:
真的非常感谢您,这么难的问题都解决得差不多了,现在就几个少数民族的不能完全正确匹配,我已经用红色标注出来了,要是能进一步解决,那更好,如果难度太大,就算了。

现在想请老师帮忙把D列和E列的内容整合在一起放在D列,用代码完成,因为这个表的E列存有其他数据,如果这样提取,就全丢了,再次谢谢老师!

匹配省市县区(再次求助).rar (71.75 KB, 下载次数: 166)

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-11-10 20:15 | 显示全部楼层
KCFONG 发表于 2013-11-10 10:14
I had 完善本表中的代码, please test

这个问题以前也在这个论坛中求助过,老师的代码是最完美的一个,匹配率高,太让人兴奋了,帮了大忙

TA的精华主题

TA的得分主题

发表于 2013-11-10 21:05 | 显示全部楼层
本帖最后由 yjh_27 于 2013-11-10 21:15 编辑
ugyun 发表于 2013-11-10 20:11
KCFONG 老师:
真的非常感谢您,这么难的问题都解决得差不多了,现在就几个少数民族的不能完全正确匹配, ...
之所以出现这种情况:

巴马县劳动保险所基金专户
   巴马瑶族自治县      

中间夹有其他字符。解决方法是增加巴马记录。

但是如果巴马劳动保险所基金专户
也会找不到。

TA的精华主题

TA的得分主题

发表于 2013-11-10 21:18 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-11-10 21:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
see if fit your request

匹配省市县区(再次求助) v1.rar

67.48 KB, 下载次数: 480

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-11-11 09:56 | 显示全部楼层
我是用正则表达式做的,准确率高,但不能模糊匹配,供参考。
  1. Sub test()
  2.   Dim reg1 As Object
  3.   Dim arr1, arr2
  4.   Dim r1, r2, i, j As Integer
  5.   
  6.   
  7.   Set reg1 = CreateObject("vbscript.regexp")
  8.   arr1 = Worksheets("省市县代码对照表").UsedRange
  9.   arr2 = Worksheets("账户信息").UsedRange
  10.   
  11.   r1 = UBound(arr1)
  12.   r2 = UBound(arr2)
  13.   
  14.   
  15.   reg1.Global = False
  16.   
  17.   fla = False
  18.   
  19.   For i = 2 To r2
  20.     fla = False
  21.     For j = 2 To r1
  22.       reg1.Pattern = arr1(j, 4)
  23.       If reg1.test(arr2(i, 1)) Then
  24.         arr2(i, 3) = arr1(j, 2) & arr1(j, 3) & arr1(j, 4)
  25.         Exit For
  26.       Else
  27.         arr2(i, 3) = ""
  28.       End If
  29.     Next
  30.    
  31.   Next
  32.   
  33.   Worksheets("账户信息").Range("c1").Resize(r2, 1) = Application.Index(arr2, 0, 3)
  34.   
  35. End Sub
复制代码

匹配省市县区.rar

75.26 KB, 下载次数: 593

点评

空了向chxw68 老师学习一下正则表达式!  发表于 2015-4-11 09:48

评分

5

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-11-11 19:40 | 显示全部楼层
本帖最后由 ugyun 于 2013-11-11 19:52 编辑
chxw68 发表于 2013-11-11 09:56
我是用正则表达式做的,准确率高,但不能模糊匹配,供参考。


感谢,可以参考,要是能模糊匹配就好了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 13:50 , Processed in 0.049125 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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