如何删除Excel中的特殊/不需要的字符

  • Share This
Michael Brown

在这篇文章中,你将学习如何从一个文本字符串中删除特定的字符,并一次从多个单元格中删除不需要的字符。

当从其他地方向Excel导入数据时,大量的特殊字符可能会进入你的工作表。 更令人沮丧的是,有些字符是不可见的,这就在文本字符串之前、之后或内部产生了额外的白色空间。 本教程为所有这些问题提供了解决方案,使你不必逐个单元格查看数据并清除不需要的内容。用手写的字符。

    删除Excel单元格中的特殊字符

    要从一个单元格中删除一个特定的字符,通过使用SUBSTITUTE函数的最简单形式将其替换为一个空字符串。

    替换(SBSTITUTE) 电池 , , "")

    例如,为了消除A2中的一个问号,B2中的公式是:。

    =substitute(a2, "?", "")

    要删除键盘上没有的字符,可以从原单元格复制/粘贴到公式中。

    例如,这里你可以摆脱一个倒置的问号。

    =substitute(a2, "¿", "")

    但如果一个不需要的字符是 隐形的 简单地说,通过CODE函数找到它的代码号。

    在我们的案例中,不需要的字符("¿")在A2单元格中排在最后,所以我们使用CODE和RIGHT函数的组合来检索其独特的代码值,即191。

    =code(right(a2))

    一旦你得到了字符的代码,将相应的CHAR函数服务于上面的通用公式。 对于我们的数据集,公式如下。

    =substitute(a2, char(191),"" )

    注意:SUBSTITUTE函数是 区分大小写 如果你不想要的字符是一个字母,请记住这一点。

    删除字符串中的多个字符

    在以前的一篇文章中,我们研究了如何通过将几个SUBSTITUTE函数嵌套在一起,从Excel的字符串中删除特定的字符。 同样的方法可以用来一次性消除两个或多个不需要的字符。

    替换(替换(替换)) 电池 , 符号1 , ""), 符号2 , ""), 符号3 , "")

    例如,要从A2的文本字符串中消除正常的感叹号和问号以及倒置的感叹号,请使用这个公式。

    =substitute(substitute(substitute(a2, "!", ""), "¡", ""), "?

    同样可以借助CHAR函数,其中161是 "¡"的字符编码,191是 "¿"的字符编码。

    =substitute(substitute(a3, "!", ""), "?", ""), char(161), "") , char(191), "")

    嵌套的SUBSTITUTE函数对于合理数量的字符可以正常工作,但如果你有几十个字符要删除,公式就会变得太长,难以管理。 下一个例子展示了一个更紧凑和优雅的解决方案。

    一次性删除所有不需要的字符

    该解决方案仅适用于Excel for Microsoft 365

    你可能知道,Excel 365有一个特殊的函数,可以让你创建自己的函数,包括那些递归计算的函数。 这个新函数名为LAMBDA,你可以在上面链接的教程中找到关于它的全部细节。 下面,我将用几个实际的例子来说明这个概念。

    一个自定义的LAMBDA函数来 删除不需要的字符 详见下文。

    =LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1), string)

    为了能够在你的工作表中使用这个函数,你需要先为它命名。 为此,按Ctrl + F3打开 名字经理 ,然后定义一个 新名称 以这种方式。

    1. 命名 框,输入函数的名称。 移除字符 .
    2. 将范围设置为 工作手册 .
    3. 指的是 框,粘贴上述公式。
    4. 可选地,输入参数的描述,在 评论 当你在单元格中输入公式时,这些参数将被显示出来。
    5. 点击 认可 来保存你的新功能。

    详细说明请见如何命名一个自定义LAMBDA函数。

    一旦函数得到一个名字,你就可以像任何本地公式一样引用它。

    从用户的角度来看,我们的自定义函数的语法就像这样简单。

    RemoveChars(string, chars)

    在哪里?

    • 字符串 - 是原始字符串,或者是对包含该字符串的单元格/区域的引用。
    • 字母 - 可以用一个文本字符串或一个单元格引用来表示,以删除的字符。

    为方便起见,我们在某个单元格(如D2)中输入不需要的字符。 要从A2中删除这些字符,公式为:。

    =RemoveChars(A2, $D$2)

    为了使该公式能够正确工作,请注意以下事项。

    • 在D2中,列出的字符没有空格,除非你也希望消除空格。
    • 包含特殊字符的单元格的地址被$符号锁定($D$2),以防止将公式复制到下面的单元格时,引用发生变化。

    然后,我们简单地把公式拖下来,让D2中列出的所有字符从A2到A6单元格中删除。

    要用一个公式清理多个单元格,请为第一个参数提供A2:A6范围。

    =RemoveChars(A2:A6, D2)

    由于公式只在最上面的单元格中输入,你不需要担心锁定单元格坐标--在这种情况下,相对引用(D2)就可以了。 而且由于支持动态数组,公式会自动溢出到所有被引用的单元格。

    删除一个预定义的字符集

    要从多个单元格中删除预定义的字符集,你可以创建另一个LAMBDA,调用主的 移除字符 例如,在第2个参数中指定不希望出现的字符。

    要删除 特殊字符 ,我们已经创建了一个自定义函数,名为 移除特殊字符(RemoveSpecialChars :

    =LAMBDA(string, RemoveChars(string, "?¿!¡*%#@^"))

    删除数字 我们又创建了一个函数,名为 删除数字 :

    =LAMBDA(string, RemoveChars(string, "0123456789"))

    上述两个函数使用起来都超级简单,因为它们只需要一个参数--原始字符串。

    为了消除 特殊字符 从A2开始,公式为:。

    =RemoveSpecialChars(A2)

    只删除 数字字符。

    =RemoveNumbers(A2)

    这个功能如何工作。

    从本质上讲, 移除字符 函数循环浏览了 字符串 每次递归调用之前,IF函数都会检查剩余的字符。 如果是 字符串 一旦最后一个字符被处理完毕,该公式就会返回 绳子 它目前的形式和出口。

    关于详细的公式分解,请参见递归LAMBDA删除不需要的字符。

    用VBA删除特殊字符

    这些函数可以在所有版本的Excel中使用

    如果你的Excel中没有LAMBDA函数,没有什么能阻止你用VBA创建一个类似的函数。 一个用户定义的函数(UDF)可以用两种方式编写。

    删除特殊字符的自定义功能 递归 :

    这段代码模拟了上面讨论的LAMBDA函数的逻辑。

    Function RemoveUnwantedChars(str As String , chars As String ) If ( " " chars ) Then str = Replace(str, Left(chars, 1), "" ) chars = Right(chars, Len(chars) - 1) RemoveUnwantedChars = RemoveUnwantedChars(str, chars) Else RemoveUnwantedChars = str End If End Function

    删除特殊字符的自定义功能 非递归 :

    在这里,我们从1到Len(chars)循环查看不需要的字符,并将原始字符串中发现的字符替换为空字符。 MID函数将不需要的字符一个一个地拉出来,并将它们传递给Replace函数。

    Function RemoveUnwantedChars(str As String , chars As String ) For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), " " ) Next RemoveUnwantedChars = str End Function

    按照《如何在Excel中插入VBA代码》中的解释,在你的工作簿中插入上述代码之一,你的自定义函数就可以使用了。

    为了不混淆我们的新用户定义的函数和Lambda定义的函数,我们给它起了不同的名字。

    RemoveUnwantedChars(string, chars)

    假设原始字符串在A2中,不受欢迎的字符在D2中,我们可以用这个公式把它们去掉。

    = RemoveUnwantedChars(A2, $D$2)

    带有硬编码字符的自定义函数

    如果你不想为每个公式提供特殊字符而烦恼,你可以直接在代码中指定它们。

    Function RemoveSpecialChars(str As String ) As String Dim chars As String Dim index As Long chars = "?¿!¡*%#$(){}[]^&/\~+-" For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), " " ) Next RemoveSpecialChars = str End Function

    请记住,上述代码是用于演示的。 在实际使用中,请确保在下面一行中包括所有你想删除的字符。

    chars = "?¿! ¡*%#$(){}[]^&/~+-"

    这个自定义函数被命名为 移除特殊字符(RemoveSpecialChars 而且它只需要一个参数--原始字符串。

    RemoveSpecialChars(string)

    为了从我们的数据集中剥离特殊字符,公式为:。

    =RemoveSpecialChars(A2)

    删除Excel中的不可打印字符

    Microsoft Excel有一个特殊的功能来删除非打印字符--CLEAN功能。 从技术上讲,它剥离了7位ASCII集(代码0到31)中的前32个字符。

    例如,要删除 不可打印的字符 从A2开始,这里是要使用的公式。

    =CLEAN(A2)

    这将消除非打印字符,但文本之前/之后和单词之间的空格将保留。

    为了摆脱 额外空间 ,将CLEAN公式包裹在TRIM函数中。

    =trim(clean(a2))

    现在,所有前面和后面的空格都被删除,而中间的空格则减少为一个空格字符。

    如果你想绝对删除 所有空间 在一个字符串内,然后另外用一个空字符串代替空格字符(代码为32)。

    =trim(清洁((替代(a2, char(32), "")))))

    一些空格或其他不可见的字符仍然留在你的工作表中? 这意味着这些字符在Unicode字符集中具有不同的价值。

    举例来说,一个人的字符代码 非断裂空间 ( )是160,你可以用这个公式清除它。

    =substitute(a2, char(160)," ")

    要擦除一个 特定非打印字符 详细说明和公式例子在这里:如何删除一个特定的非打印字符。

    用Ultimate Suite删除特殊字符

    支持Microsoft 365的Excel,Excel 2019 - 2010

    在这最后一个例子中,让我告诉你在Excel中删除特殊字符的最简单方法。 在安装了终极套件后,你需要这样做。

    1. 关于 阿博比特数据 选项卡,在 文本 组,点击 移除 > 移除字符 .

  • 在该插件的窗格中,选择源范围,选择 删除字符集 并从下拉列表中选择所需的选项( 符号& 标点符号 在这个例子中)。
  • 点击 移除 按钮。
  • 一会儿,你就会得到一个完美的结果。

    如果出了问题,不用担心--你的工作表的备份将被自动创建,因为 备份本工作表 框是默认选择的。

    想试试我们的移除工具吗? 下面有一个评估版的链接。 谢谢你的阅读,希望下周在我们的博客上见到你。

    可用的下载

    删除特殊字符 - 示例(.xlsm文件)

    终极套房 - 试用版 (.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.