【问题标题】:Using Excel for address, string manipulation使用 Excel 进行地址、字符串操作
【发布时间】:2017-02-07 08:43:38
【问题描述】:

我目前正在处理一个关于城市地址的非常大的数据源,其中数据看起来像这样。

来源:

没有。 174 5/F 174 史密斯街 174 史密斯街 TOR

我使用了一个函数来删除extendoffice 上显示的重复项。 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

结束函数

第二列变成了这样:

没有。 174 5/F 史密斯街 TOR

我现在要做的就是把它变成这个(去掉NO.并移动门牌号):

5/F 174 SMITH STREET TOR

最好的方法是做到这一点吗?有没有办法只移动街道名称旁边的街道号码。

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

我也希望我可以用 VBA 写一些东西,因为地址都是不同的长度并且有不同的间距

谢谢。

【问题讨论】:

    标签: string vba excel


    【解决方案1】:

    你可以试试这个:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-31
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 2017-09-26
      相关资源
      最近更新 更多