拿到很多地址,需要把地址拆分为省市县,写了个VBA代码一键拆分。以备后用。

Sub test()
    Dim Reg, pts$(2), rpl$(2), ar, r&, i&, j&
    Set Reg = CreateObject("VBScript.RegExp")
    Reg.Global = True
    pts(0) = "^(河北|山西|辽宁|吉林|黑龙江|江苏|浙江|安徽|福建|江西|山东|河南|湖北|湖南|广东|海南|四川|贵州|云南|陕西|甘肃|青海|台湾)(?!省)"
    pts(1) = "^(内蒙古|广西|西藏|宁夏|新疆)(?!.*自治区)"
    pts(2) = "^((?:北京|天津|上海|重庆)市?|.+?(?:省|自治区))?(.+?(?:市|[^小社]区|自治州))?(.*?(?:[^小社院]区|[市县])(?![\))]))?.*"
    rpl(0) = "$1省"
    rpl(1) = "$1自治区"
    rpl(2) = Replace("$1 $2 $3", " ", vbTab)
    r = Range("C65536").End(xlUp).Row
    ar = Range("C2").Resize(r)
    For j = 0 To 2
        Reg.Pattern = pts(j)
        For i = 1 To r - 1
            ar(i, 1) = Reg.Replace(ar(i, 1), rpl(j))
        Next
    Next
    With Range("E2").Resize(r)
        .Value = ar
        Application.DisplayAlerts = False
        .TextToColumns Tab:=True
    End With
End Sub