如何在Excel中删除单元格内的重复内容

  • Share This
Michael Brown

有三种方法可以在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中,你需要这样做。

    1. 按Alt + F11打开Visual Basic编辑器。
    2. 在左侧窗格中,右键单击 这本工作手册 并选择 插入 > 模块 .
    3. 将上述代码粘贴在 编码 窗口。

    更多信息,请参见如何在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函数的代码必须放在同一个模块上。

    如何使用该宏

    在你自己的工作簿中插入宏的代码,或打开带有代码的样本工作簿,然后执行以下步骤来运行宏。

    1. 选择一个你想删除重复文本的单元格范围。
    2. 按Alt + F8键,打开 宏观 对话框。
    3. 在宏的列表中,选择 移除DupeWords2 .
    4. 点击 运行 .

    更多细节,请看如何在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编辑器的同一个模块中。

    如何使用该宏

    假设你已经在工作簿中插入了宏的代码,或者打开了包含代码的样本工作簿,以这种方式启动宏。

    1. 选择一个你希望删除重复字符的单元格范围。
    2. 按Alt + F8键,打开 宏观 对话框。
    3. 在宏的列表中,选择 删除DupeChars2 .
    4. 点击 运行 .

    用Ultimate Suite删除重复的子字符串

    在本教程的开头,我们提到了Microsoft Excel没有内置的删除单元格内重复内容的功能。 但是,我们的Ultimate Suite却有!它可以将重复内容删除。

    你可以在......中找到它。 重复的清除器 上的下拉菜单。 阿博比特数据 选项卡,在 重复计算 组。 如果 删除重复的子串 选项没有出现在你的Excel中,请确保你安装了最新版本的Ultimate Suite(可以在这里下载免费试用版)。

    要在5秒内从多个单元格中删除重复的单词或文字(每步一秒:),这是你需要做的。

    1. 选择你的源数据并启动 删除重复的子串 工具。
    2. 指定 分隔符 .
    3. 界定是否治疗 连续分界线 为一(默认)。
    4. 选择是否执行 区分大小写 不区分大小写 搜索。
    5. 点击 移除 .

    完成了!无需摆弄VBA或公式,只需快速而准确的结果。

    要了解更多关于这个超棒的插件,请访问它的主页。 或者更好的是,在下面下载一个评估版本,并试一试!

    这就是如何删除单元格中的重复文本。 感谢你的阅读,希望下周在我们的博客上看到你的身影!

    可用的下载

    删除单元格(.xlsm文件)中的重复内容的例子

    终极套房14天全功能版(.exe文件)

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.