Note: The other languages of the website are Google-translated. Back to English

如何删除单元格字符串中重复的字符或单词?

假设每个单元格中都有重复的字符或单词,并且您要删除重复的字符并仅保留唯一的字符或单词。 您如何在Excel中解决此问题?

使用用户定义的功能删除文本字符串中的重复字符

使用用户定义的功能删除由标点符号分隔的重复单词


箭头蓝色右气泡 使用用户定义的功能删除文本字符串中的重复字符

现在,如果您有一个文本字符串列表,则需要删除重复的字符,如下面的屏幕截图所示。 在这里,我可以谈谈处理它的VBA代码。

文档删除重复字符 1

1。 按住 ALT + F11 键打开 Microsoft Visual Basic for Applications窗口.

2。 点击 插页 > 模块,然后将以下代码粘贴到 模块窗口.

VBA代码:删除单元格中文本字符串的重复字符

Function RemoveDupes1(pWorkRng As Range) As String
'Updateby Extendoffice
Dim xValue As String
Dim xChar As String
Dim xOutValue As String
Set xDic = CreateObject("Scripting.Dictionary")
xValue = pWorkRng.Value
For i = 1 To VBA.Len(xValue)
    xChar = VBA.Mid(xValue, i, 1)
    If xDic.Exists(xChar) Then
    Else
        xDic(xChar) = ""
        xOutValue = xOutValue & xChar
    End If
Next
RemoveDupes1 = xOutValue
End Function

3。 然后保存并关闭此代码,返回到工作表,然后输入此公式 = removedupes1(A2) (A2 是您要从中删除重复项的数据单元)到数据之外的空白单元格,请参见屏幕截图:

文档删除重复字符 1

4。 然后将填充手柄拖到要应用此公式的范围单元格上,所有重复的字符已立即从每个单元格中删除。

文档删除重复字符 1


箭头蓝色右气泡 使用用户定义的功能删除由标点符号分隔的重复单词

如果单元格中有些单词被某些标点符号分隔,则您也可以根据需要删除重复的单词。 请执行以下步骤:

1. 按住 ALT + F11 键打开 Microsoft Visual Basic for Applications窗口.

2。 点击 插页 > 模块,然后将以下代码粘贴到 模块窗口.

VBA代码:删除由单元标点符号分隔的重复单词

Function RemoveDupes2(txt As String, Optional delim As String = " ") As String
    Dim x
    'Updateby Extendoffice
    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

3。 然后保存并关闭此代码,返回到工作表,然后输入此公式 = RemoveDupes2(A2,“,”) 放入数据旁边的空白单元格,请参见屏幕截图:

文档删除重复字符 1

4。 然后将公式复制到所需的单元格中,所有重复的单词已从每个单元格中删除。 看截图:

文档删除重复字符 1

备注:在以上公式中, A2 表示您要使用的单元格,而逗号(,)代表用于分隔单元格中各个单词的标点符号,您可以根据需要将其更改为任何其他标点符号。


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能. 支持 Office / Excel 2007-2021 和 365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能 30 天免费试用。 60 天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (66)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
还是坏了……实际上并没有显示任何东西。 这是我的单元格数据:27000,Basic,Products,Materials,From,Wood,Stone,Earthen,Raw,Materials,27100,Basic,Forest,Products,General,27110,Basic,Forest,Products,Sawmill,Products,27120,Basic ,Forest,Products,Wood,Pulp,27200,Glass 显然有一些骗局。 将单元格留空。 想法?
该评论由网站上的主持人最小化
没关系,我是笨蛋。 因为我只想提取单词,所以我将模块重命名为 RemoveDupes,但没有在代码的后面更改 RemoveDupes。 固定,用锤子敲自己....
该评论由网站上的主持人最小化
我将 RemoveDupes 与 ConCat (VBA 的优点,而不是 CON(I-SUCK-BECAUSE-I'M-MICROSOFT)CATENATE)结合到这个:=RemoveDupes(ConCat(",",G495:G502),",") 所以它把我的细胞拉进来,然后把所有的骗子都抹掉了。 感谢 RemoveDupes,这里是 ConCat: Function ConCat(Delimiter As Variant, ParamArray CellRanges() As Variant) As String Dim Cell As Range, Area As Variant If IsMissing(Delimiter) Then Delimiter = "" For Each Area in CellRanges If TypeName( Area) = "Range" Then For Each Cell In Area If Len(Cell.Value) Then ConCat = ConCat & Delimiter & Cell.Value Next Else ConCat = ConCat & Delimiter & Area End If Next ConCat = Mid(ConCat, Len(Delimiter ) + 1) 结束函数
该评论由网站上的主持人最小化
我尝试了您的解决方案“使用用户定义的函数删除由标点符号分隔的重复单词”,它适用于单元格中的多个单词但并不能完全解决我的问题。 我有一个具有多个值的单元格,并希望与另一个具有多个值的单元格进行比较,然后让它删除两个单元格之间存在的重复项。 有没有办法做到这一点?
该评论由网站上的主持人最小化
同样在这里请帮助
该评论由网站上的主持人最小化
这个线程还活着吗? 我将非常感谢这个 VBA 函数的一些见解。我的问题与代码有关,如果我需要指示它找到特定的标点符号作为分隔符。如果我使用“@”作为标点符号?
该评论由网站上的主持人最小化
你的建议太棒了! 我在大约 58,400 分钟内整理了 2 条记录,节省了一周(或更多)的工作时间。 我的副本有点难把这个例子“V&O Liquid Fuel Lantern 13-1/2in blk Fuel lantern”变成这个“V&O Liquid Fuel Lantern 13-1/2in blk”谢谢。
该评论由网站上的主持人最小化
您好,我需要您的帮助,我尝试了您的代码,但它不起作用,可能是因为我有数字我有重复的电话号码,用逗号分隔 请告诉我该怎么做 谢谢
该评论由网站上的主持人最小化
同样在这里请帮助
该评论由网站上的主持人最小化
太棒了,谢谢! 谢谢你! 谢谢你!
该评论由网站上的主持人最小化
太棒了,谢谢你!.....
该评论由网站上的主持人最小化
嗨,伙计,我需要你的帮助。 如果我想提取重复项我该怎么办? 在 A1 (asdfghjiklkk) 所以 k 是重复字符我想要 A2 (k) 我该怎么办?
该评论由网站上的主持人最小化
如果我想保留某个单词而其他单词不重复,是否可以调整功能?
该评论由网站上的主持人最小化
非常感谢您提供本指南,为我节省了很多工作! :)
该评论由网站上的主持人最小化
这很有帮助。 我已经尝试过了,它对我来说是例外的。 优秀的 !!!!
该评论由网站上的主持人最小化
这是在单个单元格中查找重复短语的绝佳而简单的解决方案,比我在寻找问题的答案时发现的一些冗长的宏解决方案要容易得多,谢谢!
该评论由网站上的主持人最小化
感谢这段代码 - 它为我节省了大量时间。
该评论由网站上的主持人最小化
我有类似 1 的数据。在单个单元格中显示如下,我想喜欢 2。 1. ZERPUR,MAHENDRAGARH, HARYANA-123029, 30771237, 8813073653, ZERPUR(16),MAHENDRAGARH, HARYANA-123029, 30771237, 8813073653 我需要这个喜欢 :- ZERPUR,MAHENDRAGARH, HARYANA-123029, 30771237, 8813073653 感谢和问候 Hanuman Singh 9034509168
该评论由网站上的主持人最小化
教我怎么做? 也需要知道。。
该评论由网站上的主持人最小化
我们能找出第一个小写字母的位置吗


考试 - RAMSHsJHSAhsjDDD ------我想通过公式 = s 知道第一个小写字母的位置
该评论由网站上的主持人最小化
你好,梅哈班,
您可以应用以下数组公式来获取第一个小写字母的位置:
=MATCH(1,IF(ABS(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))-109.5)<=12.5,1),0)
请记住同时按 Ctrl + Shift + Enter 键。


希望对你有帮助,谢谢!
该评论由网站上的主持人最小化
嗨天阳

它工作正常......
其实我想要同样的东西..

非常感谢 !!


梅哈班·辛格帕尔
该评论由网站上的主持人最小化
如何删除匹配的字符串重复...你能告诉我吗


问候,
基兰
该评论由网站上的主持人最小化
你好,基兰,
你能举一个你的问题的例子吗? 或者您可以插入附件图像。
期待你的回复!
该评论由网站上的主持人最小化
非常感谢,它对我有更多帮助。 但我想为我的数据集提供更多具体信息。
我有两个列数据。 身份证和信息。 在信息列中,重复每个单元格项目 ID,如“Kant-、Udp-、Akr- 等”。 对于我的数据集,project_id 大于 15 并且它已修复。 所以我想从单元格中删除repeated_id,但保留第一个。
示例:Kant-526 (0.0287),Kant-527 (0.0113),Kant-528 (0.0262) /// Kant-526 (0.0287),527 (0.0113),528 (0.0262),
Kant-543 (0.0685),Kant-544 (0.0685),Udp-097 (0.0141) /// Kant-543 (0.0685),544 (0.0685),Udp-097 (0.0141)

示例图像附在此处。 有什么解决方案。
该评论由网站上的主持人最小化
你好,伊姆兰,
很抱歉没有解决您的问题,如果有人有好的想法,请在这里评论。
谢谢!
该评论由网站上的主持人最小化
我有自己的解决方案。 我在这里使用了 SUBSTITUTE 公式,但它对我的数据来说太大了。 所以重复两到三遍以获得正确的结果。

=SUBSTITUTE(SUBSTITUTE("康德-","",2), ("康德-","",2)
在这里,第 1 个 2 用于第二次康德替换,对于接下来的每个康德删除,只需额外添加 ("Kant-","",2) 。 它为我工作。 但我更喜欢一个好的VBA。
该评论由网站上的主持人最小化
感谢您的代码。

你能帮我么? 我正在使用宏功能删除由单元格标点分隔的单词,但是我的数据不是单词实际上是短语。 就像“KTE,KTO,KTW,KTO”实际上是简短的描述,例如“准备账单,查看我的电子邮件,更新合同,查看我的电子邮件”。

是否可以更新 VBA 以删除重复的短语而不是单词?

非常感谢,这实际上会很有帮助。
该评论由网站上的主持人最小化
嗨,阿隆索,
要删除重复的短语,以下用户定义函数可能会对您有所帮助,请尝试一下。

函数 RemoveDuplicateValue(xStr As String, xDelim As String) As String
暗淡 x 值
如果 (Len(xDelim) > 0) 并且 (Len(Trim(xStr)) > 0) 那么
使用 CreateObject("Scripting.Dictionary")
对于拆分中的每个 xValue(xStr, xDelim)
If Trim(xValue) <> "" And Not .exists(Trim(xValue)) Then .Add Trim(xValue), Nothing
下一页
如果 .Count > 0 那么 RemoveDuplicateValue = Join(.keys, xDelim)
结束
其他
删除重复值 = xStr
结束如果
函数结束

然后应用这个公式:=RemoveDuplicateValue(A2,","),将分隔符更改为您自己的。
该评论由网站上的主持人最小化
你好,天阳,



我希望得到以下单元格的帮助:

PR-波多黎各; 美国-美国; 美国-美国

我需要删除重复的 US-UNITED STATES,因为我的上传工具不允许重复。



我使用了上面的 VBA 并用“;”替换了我的公式分隔符。 连字符是否导致此问题? 它返回#NAME? 每当我运行公式时。 我是宏/VBA 的新手,但我确保将文件保存为启用宏的文件。 我真的很想跟着这些到T。


感谢您提供所有这些已经很重要的信息,因为它对我必须完成的另一个项目有所帮助,非常感谢您提供任何额外的信息。
该评论由网站上的主持人最小化
嗨,迈克尔,
你的意思是从一个单元格中删除所有重复的短语,只留下唯一的短语吗?
期待你的回复!
该评论由网站上的主持人最小化
这是我正在寻找的输出:

当前:PR-波多黎各; 美国-美国; 美国-美国
期望:PR-波多黎各; 美国-美国

希望这是有道理的,非常感谢您的快速回复。
该评论由网站上的主持人最小化
嗨,迈克尔,
你只需要应用下面的代码,然后使用这个公式:=RemoveDuplicateValue(A2,";")。 请尝试,希望对您有所帮助!

函数 RemoveDuplicateValue(xStr As String, xDelim As String) As String
暗淡 x 值
如果 (Len(xDelim) > 0) 并且 (Len(Trim(xStr)) > 0) 那么
使用 CreateObject("Scripting.Dictionary")
对于拆分中的每个 xValue(xStr, xDelim)
If Trim(xValue) <> "" And Not .exists(Trim(xValue)) Then .Add Trim(xValue), Nothing
下一页
如果 .Count > 0 那么 RemoveDuplicateValue = Join(.keys, xDelim)
结束
其他
删除重复值 = xStr
结束如果
函数结束
该评论由网站上的主持人最小化
非常感谢你。 你的回应比我的咖啡更受欢迎!
该评论由网站上的主持人最小化
嗨,这真的很有帮助
但我想删除“NO TO:”之后的整个单词

例如:NO TO:[C11bx1]

NO TO:[C11bx3] 像这样
这里还没有评论
加载更多
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护