删除 Excel 单元格中的重复项

Wal*_*cio 7 excel cell duplicates excel-formula duplicate-removal

假设我在一个 Excel 单元格中有以下文本字符串:

John John John Mary Mary
Run Code Online (Sandbox Code Playgroud)

我想在另一个单元格上创建一个公式(所以没有菜单功能或 VBA,请)

John Mary
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

到目前为止我尝试过的是在互联网上搜索有关该问题的内容,我所能找到的只是涉及 Excel 的内置重复删除或涉及countif 和替换"". 我还查看了 Excel 函数列表,尤其是“文本”类别中的函数列表,但找不到任何可以在一个单元格上完成的有趣内容。

小智 6

答案在这里: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
'Updateby20140924
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
End Function
Run Code Online (Sandbox Code Playgroud)

将上面的代码放在一个模块中

使用=RemoveDupes2(A2,",") A2 包含由 分隔的重复文本,您可以更改分隔符


Ron*_*eld 0

正如我所写,使用 VBA 求解是微不足道的。如果无法使用 VBA,一种方法是使用辅助列。

假设:你的字符串在 A1 中

输入以下公式:

C1:  =IFERROR(INDEX(TRIM(MID(SUBSTITUTE($A$1," ",REPT(" ",99)),(ROW(INDIRECT("1:" & LEN($A$1)-LEN(SUBSTITUTE($A$1," ",""))+1))-1)*99+((ROW(INDIRECT("1:" & LEN($A$1)-LEN(SUBSTITUTE($A$1," ",""))+1))=1)),99)),ROWS($1:1),1),"")

D1:  =IF(COUNTIF(C1:$C$5,C1)=1,C1,"")
Run Code Online (Sandbox Code Playgroud)

选择 C1 和 D1 并填写,直到开始出现空白

E1:  =D1
E2:  =TRIM(CONCATENATE(D2," ",E1))
Run Code Online (Sandbox Code Playgroud)

选择E2并向下填写。

E 列中最后一个单元格的内容将是您的结果。

如果您想要一个自动返回 E 列范围中最后一个单元格内容的单元格,您可以使用如下公式:

=LOOKUP(REPT("z",99),$E$1:$E$100)
Run Code Online (Sandbox Code Playgroud)