|
本帖最后由 贺达勇 于 2023-7-8 13:35 编辑
用VBA提取相关数据到相应单元格,
原始数据如下:
湖北省太白山地区红安县太平桥镇太湖村一组01号
浙江省鄞州区钟公庙街道宋诏桥村鄞县大道东段01号
安徽省蒙城县小涧镇郭店社区高老庄001号
江西省贑州市赣县江口镇七十里店村1組01号
浙江省嵊州市金庭镇新岩村01号
浙江省宁波市鄞州区五乡镇天童庄村新屋01号
江西省吉安市永丰县恩江镇东湖工业区建工巷26号2单元402室
结果如图片:
案列结果少打了一个永丰县
Sub 分离行政区域名称()
Dim ss As Range, str As String
Set regx = CreateObject("vbscript.regexp")
With regx
.Global = True
.Pattern = "\S+省|\S+自治区|\S+自治州|\S+?市|\S+自治区(?![乡村镇])|\S+县|\S+区|\S+乡|\S+镇|\S+街道|\S+村|\S+社区|\S+"
For Each ss In Range("A2", Cells(Rows.Count, 1).End(xlUp))
str = ss.Value
Set mat = .Execute(str)
For Each ss1 In mat
If ss1 Like "*省" Or ss1 Like "*自治区" Then
n = 1
ElseIf ss1 Like "*自治州" Or ss1 Like "*市" Then
n = 2
ElseIf ss1 Like "*[区县]" Then
If ss1 Like "*社区" Then
n = 5
Else
n = 3
End If
ElseIf ss1 Like "*[乡镇]" Or ss1 Like "*街道" Then
n = 4
ElseIf ss1 Like "*村" Or ss1 Like "*社区" Then
n = 5
Else
n = 6
End If
'n = n + 1
ss.Offset(0, n) = ss1
Next ss1
n = 0
Next ss
End With
End Sub 这个也不全对。
|
|