如何从包含文本字符串的大量单元格中更快地删除多余的空格?
比方说5000多个单元格。
我尝试过的某些方法包括:
For Each c In range
c.Value = Trim(c.Value)
Next c
和
For Each c In range
c = WorksheetFunction.Trim(c)
Next c
和
For Each c In range
c.Value = Replace(c.Value, " ", " ")
Next c
有什么提速建议吗?
循环正在杀死您。一次删除整个列中的空格:
Sub SpaceKiller()
Worksheets("Sheet1").Columns("A").Replace _
What:=" ", _
Replacement:="", _
SearchOrder:=xlByColumns, _
MatchCase:=True
End Sub
调整范围以适合。如果要删除double空格,则:
Sub SpaceKiller()
Worksheets("Sheet1").Columns("A").Replace _
What:=" ", _
Replacement:=" ", _
SearchOrder:=xlByColumns, _
MatchCase:=True
End Sub
EDIT#1:
此版本将双打替换为单打,然后检查是否仍然还有双打!
Sub SpaceKiller3()
Worksheets("Sheet1").Columns("A").Replace _
What:=" ", _
Replacement:=" ", _
SearchOrder:=xlByColumns, _
MatchCase:=True
Set r = Worksheets("Sheet1").Columns("A").Find(What:=" ")
If r Is Nothing Then
MsgBox "done"
Else
MsgBox "please run again"
End If
End Sub
您可以重新运行,直到看到done
EDIT#2:
基于Don Donoghue的评论,此版本将<>运行,直到所有double都转换为singles:Sub SpaceKiller3()
Worksheets("Sheet1").Columns("A").Replace _
What:=" ", _
Replacement:=" ", _
SearchOrder:=xlByColumns, _
MatchCase:=True
Set r = Worksheets("Sheet1").Columns("A").Find(What:=" ")
If r Is Nothing Then
MsgBox "done"
Else
Call SpaceKiller3
End If
End Sub
Evaluate