ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 包含家庭地址的单元格是否可以用VBA拆分

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-8-1 17:38 | 显示全部楼层
dongfgdwdjg 发表于 2016-8-1 16:48
不好意思,我没太弄明白。你的公式最终输出效果如图?还是哪个环节出了问题了?

呃,把显示公式的开关关掉就行了。
我的思路是用省、市、区、关键字作为截取字符串的依据,
关键点是截取长度
先截省再截市
为了少写判断条件,用了前序替换的方法
供参考

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-8-1 17:53 | 显示全部楼层
jsgj2023 发表于 2016-8-1 17:17
恩,这个情形我也发现了,因为是极个别的,所以就手工处理一下吧。

好的。 谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-8-1 17:55 | 显示全部楼层
johnwalk 发表于 2016-8-1 17:38
呃,把显示公式的开关关掉就行了。
我的思路是用省、市、区、关键字作为截取字符串的依据,
关键点是截 ...

不好意思,显示公式的开关在什么地方。我太菜了

TA的精华主题

TA的得分主题

发表于 2016-8-1 18:08 | 显示全部楼层
dongfgdwdjg 发表于 2016-8-1 17:55
不好意思,显示公式的开关在什么地方。我太菜了

好吧 找不到的话。。。。。
运行一下这一句:
    ActiveWindow.DisplayFormulas = False

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-8-1 18:28 | 显示全部楼层
johnwalk 发表于 2016-8-1 18:08
好吧 找不到的话。。。。。
运行一下这一句:
    ActiveWindow.DisplayFormulas = False

谢谢! 解决了

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-8-1 19:02 | 显示全部楼层
楼上的大神们给予了很大帮助,但运行中还存在 一点瑕疵:如四个省级市(直辖市)不能识别、县不能识别,区和小区不分等。不知道还有没有 大师继续完善?先行谢过了。

TA的精华主题

TA的得分主题

发表于 2016-8-1 21:29 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
省市区有对照表处理准确度才有基本保证。

TA的精华主题

TA的得分主题

发表于 2016-8-1 21:35 | 显示全部楼层
本帖最后由 gbgbxgb 于 2016-8-1 21:52 编辑

某些人玩正则玩上瘾了,有兴趣的琢磨下:
.Pattern = "^(([^省]+省)|(.+自治区))?([^市]+市)?([^市区县]+(市|[^小]区|县))?(.+(街道办事处|街道办|街道|镇|乡))?(.+)?"

上个图片,不提供代码(附件仅是代码运行后的结果,即未含代码):
eew.gif

包含家庭地址的单元格拆分.rar

27.47 KB, 下载次数: 55

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-8-1 22:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Option Explicit

  2. Sub 拆分家庭住址()
  3.     Dim Reg, Mat, Ma, x&, arr2(1 To 10000, 1 To 3)
  4.     Dim R&, Arr, Brr, i&, a&, b%
  5.     Application.ScreenUpdating = False
  6.     R = Cells(Rows.Count, 1).End(xlUp).Row
  7.     Arr = Range("a2:a" & R)
  8.     Brr = Array("天津市", "北京市", "重庆市", "上海市")
  9.     Set Reg = CreateObject("Vbscript.RegExp")
  10.     With Reg
  11.         .Global = True
  12.         .Pattern = "([\u4e00-\u9fa5]*省)?([\u4e00-\u9fa5]*[市县])?([\u4e00-\u9fa5]{1,2}[县|市|区])"
  13.     End With
  14.     For i = 1 To UBound(Arr)
  15.             Set Mat = Reg.Execute(Arr(i, 1))
  16.             For Each Ma In Mat
  17.                 For x = 1 To 3
  18.                     arr2(i, x) = Reg.Replace(Ma, "$" & x)
  19.                 Next x
  20.             Next Ma
  21.         Next i
  22.     [c:e].Clear
  23.     [c1].Resize(1, 3) = Array("省市", "地市", "县市区")
  24.      For a = 1 To UBound(Arr)
  25.         If arr2(a, 1) = "" Then
  26.                 If arr2(a, 3) <> "天津市" And arr2(a, 3) <> "北京市" And arr2(a, 3) <> "上海市" And arr2(a, 3) <> "重庆市" Then
  27.                     If arr2(a, 2) <> "天津市" And arr2(a, 2) <> "北京市" And arr2(a, 2) <> "上海市" And arr2(a, 2) <> "重庆市" Then
  28.                         arr2(a, 1) = "山东省"
  29.                     End If
  30.                 End If
  31.         End If
  32.      Next a
  33.     [c2].Resize(i, 3) = arr2
  34.     Range("c:e").EntireColumn.AutoFit
  35.     Range("c1:e" & R).Borders.LineStyle = xlContinuous
  36.     Application.ScreenUpdating = True
  37. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2016-8-1 22:19 | 显示全部楼层
增加匹配直辖市,匹配县,区分“区”和“小区”,详见附件。

包含家庭地址的单元格拆分 - 删除县市区后面的.rar

54.47 KB, 下载次数: 223

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-19 00:49 , Processed in 0.041946 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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