Table of contents
有三种方法可以在Excel中查找和删除单元格内的重复内容。 只要选择最适合你的一种就可以了。
当涉及到删除重复的值或行时,Microsoft Excel提供了一系列不同的选项。 但当涉及到删除特定单元格内的相同文本时,Excel提供了......什么都没有。 没有工具,没有功能,没有公式,什么都没有。 这会阻止我们实现我们的目标吗? 在任何情况下,如果Excel没有我们需要的功能,让我们自己去写一个:)
如何删除Excel单元格中的重复词
问题 :你在一个单元格中有相同的单词或文本串,并希望删除第二个和所有后续的重复。
解决方案 : 一个自定义的用户定义的函数或VBA宏。
用户定义的函数,删除单元格内的重复内容
为了消除单元格中的重复文本,你可以使用以下用户定义的函数(UDF),名为 移除杜撰的文字 :
Function RemoveDupeWords(text As String , Optional delimiter As String = " " ) As String Dim dictionary As Object Dim x, part Set dictionary = CreateObject ( "Scripting.Dictionary" ) dictionary.CompareMode = vbTextCompare For Each x In Split(text, delimiter) part = Trim(x) If part "" And Not dictionary.Exists(part) then dictionary.Add part, Nothing End If Next If dictionary.Count> 0 ThenRemoveDupeWords = Join(dictionary.key, delimiter) Else RemoveDupeWords = "" End If Set dictionary = Nothing End Function如何在你的工作簿中插入该函数的代码
要将上述代码添加到你的Excel中,你需要这样做。
- 按Alt + F11打开Visual Basic编辑器。
- 在左侧窗格中,右键单击 这本工作手册 并选择 插入 > 模块 .
- 将上述代码粘贴在 编码 窗口。
更多信息,请参见如何在Excel中插入VBA代码。
RemoveDupeWords函数语法
我们新创建的用于删除单元格中重复文本的函数有如下语法。
RemoveDupeWords(text, [delimiter])在哪里?
- 文本 (必填) - 你想删除重复文本的字符串或单元格。
- 分隔符 (可选) - 分隔重复文本的分隔符。 如果省略,将使用空格作为分隔符。
该功能是 不区分大小写 ,意味着小写字母和大写字母被视为相同的字符。
如何使用RemoveDupeWords函数
一旦函数的代码被添加到你的工作簿中,你就可以像使用Excel的内置函数一样在你的公式中使用它。
只要在等号后面开始输入函数的名称,它就会出现在公式的智能感应中。 双击函数,你就会把它插入到一个单元格中。 定义参数,输入结束括号,按回车键,你的公式就完成了。
例如,要从A2中删除由逗号和空格分隔的重复词,可在B2中输入以下公式,然后根据需要向下拖动它,穿过许多单元格。
=RemoveDupeWords(A2, ", ")
结果是,你将得到一个独特的单词或子字符串的列表,用 逗号和空格 :
如果你想得到一个逗号分隔的列表,那么就用 只有一个逗号 为分隔符。
=RemoveDupeWords(A2, "," )
如果你的源数据被一个 空间 ,第二个参数应该是""或省略。
=RemoveDupeWords(A2)
像其他Excel函数一样,当源数据发生变化时,我们的UDF会自动重新计算,所以你的结果将永远是最新的。
VBA巨集一次删除多个单元格中的重复文本
如果你想一次性删除多个单元格的重复文本,那么你可以调用 移除杜撰的文字 在这种情况下,定界符是硬编码的,每次定界符改变时,你都必须更新宏的代码。 另外,你可以为最常见的定界符编写一些代码变化,例如,空格、逗号或逗号和空格,并给你的宏起一个有意义的名字,例如。 删除DupesDelimSpace .
该宏的代码如下。
Public Sub RemoveDupeWords2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeWords(cell.Value, ", " ) Next End Sub在上述代码中,分隔符是一个 逗号和空格 要使用不同的分隔符,请在该代码行中用其他字符替换", "。
cell.Value = RemoveDupeWords(cell.Value, ", ")
注意:为了使宏发挥作用,其代码和RemoveDupeWords函数的代码必须放在同一个模块上。
如何使用该宏
在你自己的工作簿中插入宏的代码,或打开带有代码的样本工作簿,然后执行以下步骤来运行宏。
- 选择一个你想删除重复文本的单元格范围。
- 按Alt + F8键,打开 宏观 对话框。
- 在宏的列表中,选择 移除DupeWords2 .
- 点击 运行 .
更多细节,请看如何在Excel中运行宏。
注意:因为一个宏的动作 无法挽回 我们强烈建议在使用宏之前保存你的工作簿。 这样,如果出了问题,你可以简单地关闭并重新打开工作簿,你就会回到原来的位置。 或者你可以复制一份可能受宏影响的工作表。
如何删除单元格中的重复字符
问题 : 你在一个单元格中有多个相同的字符出现,而每个单元格只应包含一个特定字符的出现。
解决方案 : 一个自定义的用户定义的函数或VBA宏。
用户定义的删除重复字符的功能
要删除一个单元格内仅保留第一次出现的重复字符,你可以使用以下用户定义的函数,名为 移除DupeChars :
Function RemoveDupeChars(text As String ) As String Dim dictionary As Object Dim char As String Dim result As String Set dictionary = CreateObject ( "Scripting.Dictionary" ) For i = 1 To Len(text) char = Mid(text, i, 1) If Not dictionary.Exists(char) Then dictionary.Add char, Nothing result = result & char END If Next RemoveDupeChars = result Set dictionary = Nothing END Function要把函数的代码插入你的工作簿中,步骤与前面的例子完全相同。
RemoveDupeChars函数语法
这个自定义函数的语法尽可能的简单--只需要一个参数。
RemoveDupeChars(text)在哪里? 文本 是一个字符串或单元格,你希望从中删除重复的字符。
该功能是 区分大小写 并将小写和大写字母作为不同的字符处理。
如何使用RemoveDupeChars函数
关于RemoveDupeWords的使用,我们所说的一切都适用于 移除DupeChars 因此,不要过多地讨论理论,让我们直接举例说明。
要删除从A2开始的A列中的重复字符,请在B2中输入这个公式并向下复制。
=RemoveDupeChars(A2)
正如你在下图中看到的,该功能成功地处理了不同的字符类型,包括字母、数字和特殊符号。
提示:如果你的角色之间有某种程度的分离 分隔符 如空格、逗号或连字符,然后使用 移除杜撰的文字 如前面的例子所示的函数。
用VBA宏来删除单元格中的相同字符
喜欢 移除杜撰的文字 ,在 移除DupeChars 函数也可以从一个宏中调用。
Public Sub RemoveDupeChars2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeChars(cell.Value) Next End Sub因为这个UDF不使用任何分隔符,你不需要在代码中做任何调整。
注意:为了使宏发挥作用,它的代码和RemoveDupeChars UDF的代码必须放在VBA编辑器的同一个模块中。
如何使用该宏
假设你已经在工作簿中插入了宏的代码,或者打开了包含代码的样本工作簿,以这种方式启动宏。
- 选择一个你希望删除重复字符的单元格范围。
- 按Alt + F8键,打开 宏观 对话框。
- 在宏的列表中,选择 删除DupeChars2 .
- 点击 运行 .
用Ultimate Suite删除重复的子字符串
在本教程的开头,我们提到了Microsoft Excel没有内置的删除单元格内重复内容的功能。 但是,我们的Ultimate Suite却有!它可以将重复内容删除。
你可以在......中找到它。 重复的清除器 上的下拉菜单。 阿博比特数据 选项卡,在 重复计算 组。 如果 删除重复的子串 选项没有出现在你的Excel中,请确保你安装了最新版本的Ultimate Suite(可以在这里下载免费试用版)。
要在5秒内从多个单元格中删除重复的单词或文字(每步一秒:),这是你需要做的。
- 选择你的源数据并启动 删除重复的子串 工具。
- 指定 分隔符 .
- 界定是否治疗 连续分界线 为一(默认)。
- 选择是否执行 区分大小写 或 不区分大小写 搜索。
- 点击 移除 .
完成了!无需摆弄VBA或公式,只需快速而准确的结果。
要了解更多关于这个超棒的插件,请访问它的主页。 或者更好的是,在下面下载一个评估版本,并试一试!
这就是如何删除单元格中的重复文本。 感谢你的阅读,希望下周在我们的博客上看到你的身影!
可用的下载
删除单元格(.xlsm文件)中的重复内容的例子
终极套房14天全功能版(.exe文件)