我目前正在对城市地址上的一个非常大的数据源进行一些工作,其中数据看起来像这样。
source:
不。 174 史密斯街 174 号 5 楼 史密斯街 174 号
我使用了一个函数来删除在extendoffice 上显示的重复项。https://www.extendoffice.com/documents/excel/2133-excel-remove-duplicate-characters-in-string.html https://www.extendoffice.com/documents/excel/2133-excel-remove-duplicate-characters-in-string.html
Function RemoveDupes2(txt As String, Optional delim As String = " ") As String
Dim x
With CreateObject("Scripting.Dictionary")
.CompareMode = vbTextCompare
For Each x In Split(txt, delim)
If Trim(x) <> "" And Not .exists(Trim(x)) Then .Add Trim(x), Nothing
Next
If .Count > 0 Then RemoveDupes2 = Join(.keys, delim)
End With
结束功能
第二列变成了这样:
不。史密斯街5楼174号
我现在想做的就是把它变成这样(删除NO.并移动街道号码):
史密斯街174号5楼
实现这一目标的最佳方法是什么?有没有办法只移动街道名称旁边的街道号码。
我的一个想法是将地址分解为不同的字符串,并将它们放入不同的列中并重新排列它们。
我也希望我能用 VBA 写一些东西,因为地址都是不同的长度并且有不同的间距
Thanks.
你可以尝试这个:
Function RemoveDupes2(txt As String, Optional delim As String = " ") As String
Dim x As Variant, arr As Variant, temp As Variant
With CreateObject("Scripting.Dictionary")
.CompareMode = vbTextCompare
For Each x In Split(txt, delim)
If Trim(x) <> "" And Not .exists(Trim(x)) Then .Add Trim(x), Nothing
Next
If .count > 0 Then
arr = Split(Replace(Join(.keys, delim), "NO." & delim, ""), delim)
temp = arr(0)
arr(0) = arr(1)
arr(1) = temp
RemoveDupes2 = Join(arr, delim)
End If
End With
End Function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)