Excel 修剪空间

Excel 修剪空间,excel,vba,trim,Excel,Vba,Trim,我正试图从特定范围内的所有Excel单元格中解析左、右空格、nbsp、\n、\t等 我正在使用以下宏: Sub TRIM_CELLS() 'Clean all conditional formating Cells.FormatConditions.Delete 'improve performance Application.ScreenUpdating = False Dim all_cells_range As String all_c

我正试图从特定范围内的所有Excel单元格中解析左、右空格、nbsp、\n、\t等

我正在使用以下宏:

Sub TRIM_CELLS()

    'Clean all conditional formating
    Cells.FormatConditions.Delete

    'improve performance
    Application.ScreenUpdating = False

    Dim all_cells_range As String
    all_cells_range = "A1:A10"

    'Trim all those cells
    Range(all_cells_range).Select
    For Each cell In Selection.Cells
        cell.Value = Application.Substitute(Application.Substitute(CStr(cell.Value), vbLf, vbCr), vbCr, "")
        cell = WorksheetFunction.Trim((Application.Clean(Replace(cell.Value, Chr(160), " "))))
    Next cell
End Sub

像“Maria Tavares”这样的东西不能正确修剪。

我使用一个函数删除您定义的任何特殊字符

Function RemoveSpecialCharacters(wks As Worksheet, strRange As String, var As Variant)
Dim rngAddress As Range, cell As Range, I&

'e.g strRange - "E2:E"

With wks
Set rngAddress = .Range(strRange & .Cells(Rows.count, "A").End(xlUp).row)

  For I = LBound(var) To UBound(var)
    For Each cell In rngAddress
            cell = WorksheetFunction.Substitute(cell, var(I), " ")
                Else
            cell = WorksheetFunction.Substitute(cell, var(I), "")
    Next cell
  Next I
End With

End Function
您可以这样调用函数:

删除特殊字符工作表名称,“A1:A”,数组(Chr(9)、Chr(10)、Chr(13)、Chr(39))

其中,
Chr(10)
是换行字符,
Chr(9)
是制表符等

有关其他
Chr
代码的含义,请参见此

更新:

尝试从单元格中删除奇怪的“间谍”角色


删除特殊字符工作表名称,“A1:A”,数组(Chr(160))

@Nick:我试图使用你的想法,我认为问题在于字符本身。。。假设下面的循环按预期工作,我将得到导致问题的字符

请看这张图片:

但在那个地方什么也没印出来

Sub TRIM_CELLS()

    'Clean all conditional formating
    Cells.FormatConditions.Delete

    'improve performance
    Application.ScreenUpdating = False

    Dim all_cells_range As String
    all_cells_range = "A1:A2"

    'Trim all those cells
    Range(all_cells_range).Select
    For Each cell In Selection.Cells
        For I = 1 To 255
            cell = WorksheetFunction.Substitute(cell, Chr(I), I)
        Next I

    Next cell
End Sub

最后用那个“空间”做了一个替换。。。这不是一个很好的解决方案,但解决了我的问题。。。我只是想知道那是什么

Sub TRIM_CELLS()

'Clean all conditional formating
Cells.FormatConditions.Delete

'improve performance
Application.ScreenUpdating = False

Dim all_cells_range As String
all_cells_range = "A1:A2"
Range(all_cells_range).Select
For Each cell In Selection.Cells
    cell.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    cell.Value = Application.Substitute(Application.Substitute(CStr(cell.Value), vbLf, vbCr), vbCr, "")
    cell.Value = WorksheetFunction.Trim(cell)
Next cell

end sub

如果您在即时窗口
len(trim(cell))
中键入此内容,您会得到什么?“奇怪的字符/空格”会被记录!试试这个。将该单元格中的字体转换为webdings。在下面键入-而不是复制/粘贴-Maria Antonieta,并将其转换为webdings。盗贼角色应该在结尾处可见。它是什么?@Nick还做了=代码(cellWithOnlyWeirdChar),结果是160。。。但是char(160)没有转换。请参阅我答案中的更新。它认为这是一个
chr(160)
试试这里的解决方案-