我有一个包含近50列和10,000行的Excel文件。这些在一些单元格中包含不可打印的字符;我想从工作表中的所有单元格中删除这些字符。
将CLEAN()
函数应用于每一列是很困难的。还有其他选择吗?
答案 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
希望这有点帮助。 (虽然我很晚才参加聚会。)