TRIM
Excel 中的 TRIM 函数旨在从文本中剪裁 7 位 ASCII 空格字符 (值 32) 。
在 Unicode 字符集中,有称为不间断空格字符的其他空格字符,其十进制值为 160。 此字符在网页中通常用作 HTML 实体 。
Trim 函数和 WorksheetFunction.Trim 方法本身不会删除此不中断空格字符。
Excel 中的 WorksheetFunction.Trim 方法不同于 VBA 中的 Trim 函数,后者仅删除前导空格和尾随空格。
使用VBA识别并删除电子表格中的不间断空格字符
识别不间断的空格字符
ChrW(&HA0)
删除空行
- 删除空行,指删除 Word 文档中的纯文本中的空行,空行也叫空段、空白段落(表格中也有空行/空白段落,但表格与纯文本有区别,不在讨论范围),
空行中一般含有四种空格:
第1种是半角空格(在代码中用“ ”或“^32”或“chr(32)”表示),
第2种是全角空格(在代码中用“ ”或“chr(-24159)”或“ChrW(12288)”表示),
第3种是不间断空格(在代码中用“ ”或“^s”或“chrw(160)”表示),
第4种是制表符(在代码中用“ ”或“^9”或“chr(9)”或“vbTab”表示)。
正常情况下是看不到的,必须点击“显示/隐藏编辑标记”才可以看到。
还有些不可见的空白字符或打印字符,一般很少遇到,可不必挂心。
测试删除空格
Option Explicit
Sub ReplaceSpace()
'去除不间断空格
Dim rng As Range
Dim cell As Range
' 选择你想要替换的区域
Set rng = Application.Selection
' 遍历选定区域中的每个单元格
For Each cell In rng
' 检查单元格中的文本是否包含不间断空格
If InStr(cell.Value, ChrW(&HA0)) > 0 Then
' 如果包含不间断空格,则替换为普通空格
cell.Value = Replace(cell.Value, ChrW(&HA0), " ")
End If
Next cell
End Sub
Sub ReplaceSpace2()
'去除不间断空格和全角空格
Dim rng As Range
Dim cell As Range
' 选择你想要替换的区域
Set rng = Application.Selection
' 遍历选定区域中的每个单元格
For Each cell In rng
' 检查单元格中的文本是否包含不间断空格或全角空格
If InStr(cell.Value, ChrW(160)) > 0 Or InStr(cell.Value, ChrW(12288)) > 0 Then
' 如果包含不间断空格或全角空格,则替换为普通空格
cell.Value = Replace(Replace(cell.Value, ChrW(160), " "), ChrW(12288), " ")
End If
Next cell
End Sub
Sub ReplaceSpace3()
'去除不间断空格和全角空格,并去除首尾的空格
Dim rng As Range
Dim cell As Range
' 选择你想要替换的区域
Set rng = Application.Selection
' 遍历选定区域中的每个单元格
For Each cell In rng
' 检查单元格中的文本是否包含不间断空格或全角空格
If InStr(cell.Value, ChrW(160)) > 0 Or InStr(cell.Value, ChrW(12288)) > 0 Or InStr(cell.Value, Chr(32)) > 0 Then
' 如果包含不间断空格或全角空格,则替换为普通空格
cell.Value = Trim(Replace(Replace(cell.Value, ChrW(160), " "), ChrW(12288), " "))
End If
Next cell
End Sub
Sub ReplaceSpace4()
'去除不间断空格和全角空格,并去除首尾的空格和中间多余的空格
Dim rng As Range
Dim cell As Range
' 选择你想要替换的区域
Set rng = Application.Selection
' 遍历选定区域中的每个单元格
For Each cell In rng
' 检查单元格中的文本是否包含不间断空格或全角空格
If InStr(cell.Value, ChrW(160)) > 0 Or InStr(cell.Value, ChrW(12288)) > 0 Or InStr(cell.Value, Chr(32)) > 0 Then
' 如果包含不间断空格或全角空格,则替换为普通空格
cell.Value = WorksheetFunction.Trim(Replace(Replace(cell.Value, ChrW(160), " "), ChrW(12288), " "))
End If
Next cell
End Sub
Sub ReplaceSpace5()
'去除不间断空格和全角空格,并去除首尾的空格和中间多余的空格
Dim rng As Range
Dim cell As Range
' 选择你想要替换的区域
Set rng = Application.Selection
' 遍历选定区域中的每个单元格
For Each cell In rng
' 检查单元格中的文本是否包含不间断空格或全角空格
If InStr(cell.Value, ChrW(160)) > 0 Or InStr(cell.Value, ChrW(12288)) > 0 Or InStr(cell.Value, Chr(32)) > 0 Then
' 如果包含不间断空格或全角空格,则替换为普通空格
cell.Value = Application.Trim(Replace(Replace(cell.Value, ChrW(160), " "), ChrW(12288), " "))
End If
Next cell
End Sub
'Callback for customButton onAction
Public Sub cBAction3(control As IRibbonControl)
Call ReplaceSpace3
End Sub
网友评论