如何将CLEAN()公式应用于整个Excel工作表?

时间:2014-08-11 09:54:48

标签: excel vba excel-vba

我有一个包含近50列和10,000行的Excel文件。这些在一些单元格中包含不可打印的字符;我想从工作表中的所有单元格中删除这些字符。

CLEAN()函数应用于每一列是很困难的。还有其他选择吗?

4 个答案:

答案 0 :(得分:4)

我无法直观地看到它..如果您在单元格文本的末尾看到该字符,那么您可以使用以下代码找到该值

debug.Print asc(right(range("D1").Value,1))

只需在下面的代码中用该值替换110.

Sub Sample()
    Dim ws As Worksheet

    '~~> Set this to the relevant worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")

    ws.Cells.Replace What:=Chr(110), Replacement:="", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub

HERE是ASCII表供您参考。

答案 1 :(得分:1)

在前50列和10000行的每个单元格上应用excel CLEAN函数:

Sub cleanSheet()
    Dim r As Range
    Application.ScreenUpdating = False
    For Each r In Range(Cells(1, 1), Cells(10000, 50))
        r = WorksheetFunction.Clean(r)
    Next r
    Application.ScreenUpdating = True
End Sub

答案 2 :(得分:0)

您可以简单地创建另一个工作表,然后在第一个单元格中编写干净的公式=Clean('sheet1'!A1)并输入。

现在拖动列和行。您将在此表中获得已清理的数据。 您也可以以相同的方式使用trim功能。

希望这有帮助!

答案 3 :(得分:0)

谢谢z̫͋!这就是我想要的!

我在评论中注意到有人要求仅引用非空单元格。我使用它而不是单元格引用,它大大改善了处理时间。

For Each r In ActiveSheet.UsedRange

希望这有点帮助。 (虽然我很晚才参加聚会。)