String 使用Excel进行地址、字符串操作

String 使用Excel进行地址、字符串操作,string,vba,excel,String,Vba,Excel,我目前正在使用一个非常大的城市地址数据源进行一些工作,其中的数据看起来像这样 资料来源: 史密斯街174号史密斯街174号5楼174号TOR 我使用了一个函数来删除extendoffice上显示的重复项。 函数RemoveDupes2(txt作为字符串,可选delim作为字符串=”)作为字符串 暗x 使用CreateObject(“Scripting.Dictionary”) .CompareMode=vbTextCompare 对于拆分中的每个x(txt、delim) 如果Trim(x)“,

我目前正在使用一个非常大的城市地址数据源进行一些工作,其中的数据看起来像这样

资料来源:

史密斯街174号史密斯街174号5楼174号TOR

我使用了一个函数来删除extendoffice上显示的重复项。

函数RemoveDupes2(txt作为字符串,可选delim作为字符串=”)作为字符串
暗x
使用CreateObject(“Scripting.Dictionary”)
.CompareMode=vbTextCompare
对于拆分中的每个x(txt、delim)
如果Trim(x)“,且不存在(Trim(x)),则添加Trim(x),无任何内容
下一个
如果.Count>0,则RemoveDupes2=Join(.keys,delim)
以
端函数

第二栏变成这样:

史密斯街5楼174号TOR

我现在想做的是将其转化为以下内容(删除号码并移动街道号码):

史密斯街174号5楼TOR

实现这一目标的最佳方式是什么?有没有办法把街道号码移到街道名称旁边

我的一个想法是将地址分解成不同的字符串,并将它们放入不同的列中,然后重新排列

我还希望我能用VBA写些东西,因为地址的长度和间距都不一样

谢谢。

您可以试试这个:

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
函数RemoveDupes2(txt作为字符串,可选delim作为字符串=”)作为字符串
尺寸x为变型,arr为变型,温度为变型
使用CreateObject(“Scripting.Dictionary”)
.CompareMode=vbTextCompare
对于拆分中的每个x(txt、delim)
如果Trim(x)“,且不存在(Trim(x)),则添加Trim(x),无任何内容
下一个
如果.count>0,则
arr=拆分(替换(连接(.key,delim),“编号”和“delim,”,delim)
温度=arr(0)
arr(0)=arr(1)
arr(1)=温度
RemoveDupes2=连接(arr、delim)
如果结束
以
端函数
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