excel - 如何从 D 列和 F 列中删除特殊字符?

标签 excel vba

我在 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/

相关文章:

r - 使用 R 在 Excel 工作表中清理数据

mysql - 是否可以从Excel文件生成ER图

excel - VBA错误: Definitions of property procedures for the same property are inconsistent,或属性过程有一个可选参数

excel - Excel VBA的新增功能,尝试嵌套循环并获得编译错误

excel - 引用公式中的单元格地址/引用

ms-access - CDate 类型不匹配错误

excel - 过滤范围复制粘贴值并创建新工作表

vba - Excel范围到平面字符串

python - 将 pandas 数据帧写入 xlsm 文件(启用宏的 Excel)

vba - 打开电子邮件时运行宏的规则