拆分单元格并删除重复项?

时间:2017-04-15 19:00:07

标签: excel excel-vba duplicates cell user-defined-functions vba

我正在为学校的项目做剪辑和路径集。我有一个类似于以下

的LONG数据列表
1 9 9 9 9 9 16

1 9 9 9 9 9 17

1 9 9 9 9 9 15

1 9 9 9 9 9 18

1 9 9 9 9 9 19

1 9 9 9 9 9 20

1 9 9 9 9 9 21

1 9 9 9 9 10 16

1 9 9 9 9 10 17

1 9 9 9 9 10 15

1 9 9 9 9 10 18

几千个条目,每个条目在一个单元格中,每个数字用空格分隔。我希望能够删除重复的数字,在本例中为9,以获得:

1 9 15

1 9 16

1 9 17

1 9 18

1 9 19

1 9 20

1 9 21

我该怎么做?请像我一样向我解释5.我对VBA或公式等一无所知。需要注意的是,其中一些可能具有以下值:

1 11 11 19

删除' 1'不好,我需要特别删除' 11'

2 个答案:

答案 0 :(得分:3)

尝试此用户定义的功能。

Function RemoveDuplicates(ByVal rng As Range) As String
Dim arr() As String
Dim i As Long
Dim dict
arr = Split(rng.Value, " ")
Set dict = CreateObject("Scripting.Dictionary")
For i = 0 To UBound(arr)
    dict.Item(arr(i)) = ""
Next i
RemoveDuplicates = Join(dict.keys, " ")
End Function

假设您的字符串在A2中,那么您可以尝试上面这个用户定义的函数......

=RemoveDuplicates(A2)

enter image description here

答案 1 :(得分:0)

创建它的用户定义函数UDF插入模块并粘贴以下代码

  1. Alt + F11 打开VB编辑器
  2. 点击InsertModule,然后粘贴代码
  3. Function Customduplicate(txt As String, Optional delim As String = " ") As String
        Dim e
        With CreateObject("Scripting.Dictionary")
            .CompareMode = vbTextCompare
            For Each e In Split(txt, delim)
                If Trim(e) <> "" And Not .exists(Trim(e)) Then .Add Trim(e), Nothing
            Next
            If .Count > 0 Then Customduplicate = Join(.keys, delim)
        End With
    End Function
    

    关闭VB编辑器后,您可以在fx中看到函数 在B1
    =Customduplicate(A1, " ")
    你必须包括分隔符&#34; &#34;功能参数中的一个空格
    A1是你的第一个细胞 你可以把它拖下来 您可以将此UDF与其他分隔符一起使用&#34;,&#34;