我在 D 和 F 列中有数据,其中可能包含特殊字符(、./+ &() 等)。
我想删除特殊字符(如果有)并修剪清理列。
Sub Splchrdel()
Dim ws As Worksheet
Dim Rng As Range
Set ws = ActiveWorkbook.Worksheets("Final Exclusion")
Set Rng = ws.Range("D2:D", "F2:F")
With ws
Rng.Replace What:=(("&", ",", ".", "/", "-", "+", "#", "!", "%", "(", ")", "*", _
"'", "", "$")) Replacement:="", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Rng("D2:D:", "F2:F").Trim.Clean
End Sub
最佳答案
请测试下一个方法。 Replace
无法接收多个字符串为 What
范围。因此,字符串必须放在一个数组中,然后替换每个数组元素。另一个问题:如果要替换,必须转义“*”只有这个字符 .否则,所有内容都将替换为空字符串:
Sub Splchrdel()
Dim ws As Worksheet, Rng As Range, lastR As Long, arrWhat, El
Set ws = ActiveWorkbook.Worksheets("Final Exclusion")
lastR = ws.Range("D" & ws.Rows.count).End(xlUp).row 'if F:F has different number of rows, another lastR should be calculated
Set Rng = ws.Range("D2:D" & lastR & "," & "F2:F" & lastR) 'range only for D:D and F:F columns
arrWhat = Array("&", ",", ".", "/", "-", "+", "#", "!", "%", "(", ")", "~*", "'", "", "$")
For Each El In arrWhat
Rng.Replace What:=El, replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
Next El
'Since `Clean` does not work on a range, an iteration is needed:
Dim cel As Range
For Each cel In Rng.cells
cel.Value = WorksheetFunction.Clean(Trim(cel.Value))
Next
End Sub
关于excel - 如何从 D 列和 F 列中删除特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70814892/