Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2443|回复: 3

[已解决]正则--求匹配地址的改良代码

[复制链接]
发表于 2016-8-31 11:19 | 显示全部楼层 |阅读模式
本帖最后由 lingyuncelia1 于 2016-9-4 19:43 编辑

捕获1.JPG
Sub yy()
Dim brr(1 To 10000, 1 To 5)
arr = [a1].CurrentRegion
  Set regx = CreateObject("vbscript.regexp")
        regx.Pattern = "(.*省)(.*市)(.*)"
For i = 1 To UBound(arr)
        Set mh = regx.Execute(arr(i, 1))
        If mh.Count <> 0 Then
        A = A + 1
            For j = 0 To mh(0).submatches.Count - 1
                brr(A, j + 1) = mh(0).submatches(j)
            Next
        End If
    Next
    Range("b1").Resize(UBound(arr), 5) = brr
End Sub
运行以上代码,效果如下:
捕获2.JPG
因为“广西壮族自治区南宁市青秀区东葛路135号D栋2单元1103号”不含省,
导致右边不出数据,且左右数据不对称。其实,我就是想改一下代码,将地址按省、市、区、街镇、村居、后续详细地址这样划分,
如果实在不能划分,空格显示也好,起码左右两边数据对称。

最佳答案
2016-8-31 15:29
lingyuncelia1 发表于 2016-8-31 14:57
谢谢,比较有效,但第12条,“办事处”是街镇级别吧,

这些原始数据本来都有多少缺漏,例如:湖北省应 ...
  1. .Pattern = "(.*省|.*自治区)(.{1,4}市|.*自治州)?(.{1,4}[市区县])?(.{1,4}[镇乡]|.{1,4}办事处)?(.*)"
复制代码

yaowen.zip

14.78 KB, 下载次数: 10

发表于 2016-8-31 11:54 | 显示全部楼层
本帖最后由 gufengaoyue 于 2016-8-31 12:03 编辑

按这顺序来的
省/自治区,地级市,区/县级市/县,镇/乡,村/路/...
  1. Sub yy()
  2. Dim brr, arr
  3. arr = [a1].CurrentRegion
  4. brr = [b1].Resize(UBound(arr), 5)
  5.     With CreateObject("vbscript.regexp")
  6.         .Pattern = "(.*省|.*自治区)(.{1,4}市|.*自治州)?(.{1,4}[市区县])?(.{1,4}[镇乡])?(.*)"
  7.         For i = 1 To UBound(arr)
  8.             Set mh = .Execute(arr(i, 1))
  9.             If mh.Count <> 0 Then
  10.                 For j = 0 To mh(0).submatches.Count - 1
  11.                     brr(i, j + 1) = mh(0).submatches(j)
  12.                 Next
  13.             End If
  14.         Next
  15.     End With
  16. [b1].Resize(i - 1, 5) = brr
  17. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2016-8-31 14:57 | 显示全部楼层
gufengaoyue 发表于 2016-8-31 11:54
按这顺序来的
省/自治区,地级市,区/县级市/县,镇/乡,村/路/...

谢谢,比较有效,但第12条,“办事处”是街镇级别吧,
捕获.JPG
这些原始数据本来都有多少缺漏,例如:湖北省应城市城北办事处魏河村,其实应该是
湖北省-孝感市-应城市-城北办事处-魏河村
回复

使用道具 举报

发表于 2016-8-31 15:29 | 显示全部楼层    本楼为最佳答案   
lingyuncelia1 发表于 2016-8-31 14:57
谢谢,比较有效,但第12条,“办事处”是街镇级别吧,

这些原始数据本来都有多少缺漏,例如:湖北省应 ...
  1. .Pattern = "(.*省|.*自治区)(.{1,4}市|.*自治州)?(.{1,4}[市区县])?(.{1,4}[镇乡]|.{1,4}办事处)?(.*)"
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-22 18:28 , Processed in 0.386162 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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