夜雨聆风学习资料网

ARTICLE · 1298203

Excel VBA编程-一键批量删除文本里的换行符和特殊符号

Excel VBA编程-一键批量删除文本里的换行符和特殊符号

你从系统里导出的客户名单,明明看着是两行,排序却怎么也排不在一起;从网页粘来的地址,查找时死活找不到——十有八九,是单元格里藏着一些肉眼看不见的字符:换行符、制表符,还有网页带来的“假空格”。

今天学一个超实用技能:用 VBA 一键把这些“看不见的脏东西”清掉,让数据干干净净。

知识点:这些看不见的字符都是什么

  • 换行符:在 Excel 里按 Alt+回车 换行,其实是在单元格里塞了一个“换行符”,让它显示成两行。
  • 回车换行(CRLF):有些系统导出的数据,换行是“回车+换行”两个字符一起出现。
  • 制表符(Tab):从别的表格或网页粘来的内容,中间可能带着跳格的制表符。
  • 不间断空格(Chr(160)):从网页复制文字时,经常带这种“看起来像空格、其实不是空格”的字符,害得查找、匹配全部失效。

VBA 里用几个现成常量代表它们:

  • vbCrLf:回车 + 换行
  • vbCr:回车
  • vbLf:换行(Excel 单元格里最常见的那种)
  • vbTab:制表符
  • Chr(160):不间断空格

清理方法就一个字:替换。把这些符号都替换成普通空格(或替换成空)。我们复用第19篇学过的“查找替换”思路。

【SVG 示意图】

案例一(简单):一键清除固定 A 列的换行符

功能说明:把 A 列(数据从第2行开始,第1行是表头)里所有的换行符清除掉,让每个单元格只显示一行,方便后续排序和查找。

操作步骤:

  1. 按 Alt + F11 打开 VBA 编辑器,插入一个“模块”。
  2. 把下面代码整段粘贴进去。
  3. 回到 Excel,按 Alt + F8 选中“清除A列换行符”,点“运行”。
  4. 弹窗提示完成后,A 列的换行就都没了。
Sub 清除A列换行符()    Dim 末行 As Long    末行 = Cells(Rows.Count, 1).End(xlUp).Row    ' 三种换行都处理:回车换行、换行、回车,统一换成空格    Range("A2:A" & 末行).Replace What:=vbCrLf, Replacement:=" ", LookAt:=xlPart, MatchCase:=False    Range("A2:A" & 末行).Replace What:=vbLf, Replacement:=" ", LookAt:=xlPart, MatchCase:=False    Range("A2:A" & 末行).Replace What:=vbCr, Replacement:=" ", LookAt:=xlPart, MatchCase:=False    MsgBox "A列里的换行符已全部清除!", vbInformationEnd Sub

小提示:换行在 Excel 里大多是 vbLf,但有些导出数据带的是 vbCrLf 或 vbCr,三种都替一遍最保险。

案例二(中等):用输入框自选列和符号类型

功能说明:让程序弹框问你“清哪一列、清哪种符号”,你输入列号和类型,它就只清理那一列。适合数据分散在多列、只想处理其中一列的情况。

操作步骤:

  1. 同样在模块里粘贴下面代码。
  2. 运行“自选列清理符号”。
  3. 第一个框输入列号(比如要清 B 列,就填 2),点确定。
  4. 第二个框输入类型:1=只清换行符,2=只清制表符,3=两种都清。
  5. 程序会把你指定的那一列清理干净并提示完成。
Sub 自选列清理符号()    Dim 列号 As Long    Dim 类型 As String    Dim 末行 As Long    列号 = Val(InputBox("请输入要清理的列号(如 A 列填 1):", "选择列"))    If 列号 < 1 Then MsgBox "列号不对,已取消。", vbExclamation: Exit Sub    类型 = InputBox("要清哪种符号?" & vbCrLf & "1 = 换行符" & vbCrLf & "2 = 制表符(表格里的跳格)" & vbCrLf & "3 = 两种都清", "选择类型")    If 类型 <> "1" And 类型 <> "2" And 类型 <> "3" Then MsgBox "输入有误,已取消。", vbExclamation: Exit Sub    末行 = Cells(Rows.Count, 列号).End(xlUp).Row    If 类型 = "1" Or 类型 = "3" Then        Range(Cells(2, 列号), Cells(末行, 列号)).Replace What:=vbCrLf, Replacement:=" ", LookAt:=xlPart, MatchCase:=False        Range(Cells(2, 列号), Cells(末行, 列号)).Replace What:=vbLf, Replacement:=" ", LookAt:=xlPart, MatchCase:=False        Range(Cells(2, 列号), Cells(末行, 列号)).Replace What:=vbCr, Replacement:=" ", LookAt:=xlPart, MatchCase:=False    End If    If 类型 = "2" Or 类型 = "3" Then        Range(Cells(2, 列号), Cells(末行, 列号)).Replace What:=vbTab, Replacement:=" ", LookAt:=xlPart, MatchCase:=False    End If    MsgBox "清理完成!", vbInformationEnd Sub

案例三(实用):一键清掉全表多种看不见的符号并统计

功能说明:一次性把当前表格所有有内容的单元格里的换行符、回车、制表符,还有网页粘来的“假空格”(不间断空格 Chr(160))全部换成普通空格,并且弹窗告诉你一共清理了多少个单元格。适合从网页、ERP、其他系统导进来的“脏数据”大扫除。

操作步骤:

  1. 在模块里粘贴下面代码。
  2. 确认当前表就是要清理的那张表。
  3. 运行“一键清理全表看不见的符号”。
  4. 稍等片刻,程序会弹窗报告“一共处理了 N 个单元格”。
Sub 一键清理全表看不见的符号()    Dim 末行 As Long, 末列 As Long, i As Long, j As Long    Dim 原值 As String, 新值 As String    Dim 改格数 As Long    末行 = Cells(Rows.Count, 1).End(xlUp).Row    末列 = Cells(1, Columns.Count).End(xlToLeft).Column    改格数 = 0    For i = 2 To 末行        For j = 1 To 末列            If Cells(i, j).Value <> "" Then                原值 = CStr(Cells(i, j).Value)                新值 = Replace(原值, vbCrLf, " ")                新值 = Replace(新值, vbCr, " ")                新值 = Replace(新值, vbLf, " ")                新值 = Replace(新值, vbTab, " ")                新值 = Replace(新值, Chr(160), " ")                If 新值 <> 原值 Then                    Cells(i, j).Value = 新值                    改格数 = 改格数 + 1                End If            End If        Next j    Next i    MsgBox "已清理完成,一共处理了 " & 改格数 & " 个单元格。", vbInformationEnd Sub

小提示:Chr(160) 就是网页里那种“看起来是空格、其实不是”的字符,最容易坑人,记得一起清掉。

知识点小结

  • 看不见的换行符、制表符、不间断空格,会让排序、查找、匹配全部失灵。
  • 用 Replace 把它们替换成普通空格即可;三种换行(vbCrLf / vbLf / vbCr)都替一遍最稳。
  • 单列表用 Range.Replace 一行搞定;整张大扫除用循环 + 计数,还能知道清了多少格。
  • 改之前建议先备份文件,替换类操作不可撤销。

往期精选(同系列教程)

  • Excel VBA编程-一键标出重复数据
  • Excel VBA编程-一键合并多个工作表
  • Excel VBA编程-一键批量套用公式
  • Excel VBA编程-一键批量给内容加固定前缀或后缀
  • Excel VBA编程-一键从文本里提取指定内容

其他信息

  • 作者:西哥的AI幻觉
  • 本文代码均已测试,可直接复制到 Excel VBA 编辑器运行。
  • 文件请保存为 .xlsm 格式(启用宏的工作簿),否则代码无法保存。
  • 动手前先备份原表,替换类操作不可撤销。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料