【问题标题】:Split a cell and remove duplicates?拆分单元格并删除重复项?
【发布时间】:2017-09-11 19:23:15
【问题描述】:

我正在为学校的一个项目制作切割集和路径集。我有一长串类似于以下的数据

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'

【问题讨论】:

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


    【解决方案1】:

    试试这个用户定义的函数。

    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)
    

    【讨论】:

    • 它只是说#VALUE!我不完全确定我是否正确使用了这些功能。我只是要插入一个模块,将其复制粘贴到 B2 中,然后放入 =RemoveDuplicates(A2)
    • 请参阅此工作簿,其中代码放置在 Module1 上。 dropbox.com/s/amdakjbhf5xrz5k/RemoveDuplicates.xlsm?dl=0
    • 即使我下载的你下载的那个也说#VALUE!就可以了:(
    • 不确定为什么会发生这种情况。我在答案中添加了一个屏幕截图,以显示它如何在工作表上使用并产生所需的输出。
    【解决方案2】:

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

    1. Alt + F11 打开 VB 编辑器
    2. 点击InsertModule然后粘贴代码
    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中的Function
    B1中
    =Customduplicate(A1, " ")
    您必须在函数的参数中包含分隔符“”一个空格
    A1 是您的第一个 Cell
    你可以把它拖下来
    您可以将此 UDF 与其他分隔符 ","

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-05
      • 2014-03-02
      • 1970-01-01
      • 2019-01-02
      • 2014-11-11
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      相关资源
      最近更新 更多