excel学习库

excel表格_excel函数公式大全_execl从入门到精通

EXCEL之VBA应用实例-把一行内容按条件拆分填充到相应的单元格

自动识别并填充收件人信息后 这里假设收件人信息的固定格式为 “姓名,电话,地址,邮编,中间用逗号隔开”,例子里没有考虑到直辖市或自治区这种不是以省命名开头的,有兴趣可以自己去尝试。 Sub 自动填充收货信息() Dim xy, a, s With CreateObject("VBScript.RegExp") '创建一个VBS对象RegExp .Global = True '全局匹配 For Each xy In Range([a2], Columns(1).End(xlDown)) '从A2开始往下查找,直到A列最后一行有内容的单元格为止 .Pattern = "[\u4E00-\u9FA5A-Za-z0-9_-]+(?=[,,])" '设置正则表达式,所有的中英文,数字,下横线_横杠- Cells(xy.Row, 2) = .Execute(xy)(0) ‘填充第一个找到的内容,也就是姓名 Cells(xy.Row, 3) = .Execute(xy)(1) '填充第二个找到的内容,也就是电话 a = .Execute(xy)(2) '第三个提取到的内容要分成“省,市,县级市或县或区,详细地址”四个部分,先把这一部分放到变量a里,然后再重新重新把这一部分按条件找出来。 .Pattern = ".+省" '重新设置查找条件,找到省字前的所有字符,包括省市,.代表任意字符,+号代表一个以上 Cells(xy.Row, 4) = .Execute(a)(0) '找到就填充到相应的单元格 .Pattern = "省.+?市" '重新设置查找条件,找省字开头,到后面第一个市字结束,如果不加?号会从省字开始到最后一个省字,加了?号就是符合条件的最小范围,由于VBA不支持(?<=条件)的方式设定前面是什么字符并且不包括该字符的方法,只有先把这个字也取出来,再用下面的截取字符串方式把左边的字符去掉。 Cells(xy.Row, 5) = Right(.Execute(a)(0), Len(.Execute(a)(0)) - 1) '从右往左截取,截取的长度是字符长度减1,相当于把左边一个字去掉。 .Pattern = "市.+[市县区]" '重新设置查找条件,[]里的字是任意一个符合的,因为地级市下面可能会存在县级市或县或区 Cells(xy.Row, 6) = Right(.Execute(a)(0), Len(.Execute(a)(0)) - 1) .Pattern = "[市县区].*" Cells(xy.Row, 7) = Right(.Execute(a)(0), Len(.Execute(a)(0)) - 1) .Pattern = "[^\d]\d{6}(?!\d)" Cells(xy.Row, 8) = Right(.Execute(xy)(0), 6) Next End With End Sub

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接