Excel 拆分单元格并删除重复项?
我正在为学校的一个项目做切割集和路径集。我有一长串类似于以下的数据Excel 拆分单元格并删除重复项?,excel,duplicates,cell,user-defined-functions,vba,Excel,Duplicates,Cell,User Defined Functions,Vba,我正在为学校的一个项目做切割集和路径集。我有一长串类似于以下的数据 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 几千个条目,每个条目在一个单元格中,每个数字用空格分隔。我希望能够删除重
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”试试这个用户定义的函数
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)
尝试此用户定义的功能
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)
这是一个用户定义的函数UDF,用于创建它插入模块并粘贴以下代码
模块
,然后粘贴代码函数Customduplicate(txt作为字符串,可选delim作为字符串=”)作为字符串
暗淡的
使用CreateObject(“Scripting.Dictionary”)
.CompareMode=vbTextCompare
对于拆分中的每个e(txt、delim)
如果修剪(e)“,”且不存在(修剪(e)),则添加修剪(e),无任何内容
下一个
如果.Count>0,则Customduplicate=Join(.keys,delim)
以
端函数
关闭VB编辑器后,您可以在fx中看到该函数在B1中
=Customduplicate(A1,”)
必须在函数的参数中包含分隔符“”一个空格
A1是您的第一个单元格
您可以将其向下拖动
您可以将此UDF与其他分隔符“,”一起使用。这是一个用户定义的函数UDF,用于创建它插入模块并粘贴以下代码
模块
,然后粘贴代码函数Customduplicate(txt作为字符串,可选delim作为字符串=”)作为字符串
暗淡的
使用CreateObject(“Scripting.Dictionary”)
.CompareMode=vbTextCompare
对于拆分中的每个e(txt、delim)
如果修剪(e)“,”且不存在(修剪(e)),则添加修剪(e),无任何内容
下一个
如果.Count>0,则Customduplicate=Join(.keys,delim)
以
端函数
关闭VB编辑器后,您可以在fx中看到该函数在B1中
=Customduplicate(A1,”)
必须在函数的参数中包含分隔符“”一个空格
A1是您的第一个单元格
您可以将其向下拖动
您可以将此自定义项与其他分隔符“,”一起使用,它只表示#值!我不能完全确定我是否正确使用了这些函数。我只是去插入一个模块,复制粘贴在B2中,然后在B2中放置=RemovedDuplicates(A2)。请参阅此工作簿,其中代码放在模块1上。就连我下载的那本你写的书都写着#值#!关于它:(不确定为什么会发生这种情况。我在答案中添加了一个屏幕截图,以显示它是如何在工作表上使用并产生所需的输出的。它只是说#值!我不完全确定我是否正确使用了这些功能。我只是去插入一个模块,复制粘贴它,然后在B2中放入=RemoveDuplicates(A2)请参阅此工作簿,其中代码放在模块1上。即使是我下载的您所下载的那本,也在上面写着#VALUE!(不确定为什么会发生这种情况。我在答案中添加了一个屏幕截图,以显示如何在工作表上使用它并生成所需的输出。