繁体   English   中英

VBA 从列 D 和 F 中删除特殊字符的宏

[英]VBA Macro that removes special characters from column D and F

我是 vba 宏的新手 我正在尝试创建一个代码,该代码从整个列中删除所有特殊字符并修剪 D 和 F 列。我在 D 和 F 列中有一些数据可能有一些特殊的即 (, . / + &( )等)我希望宏循环到这些列 D 和 F 中,并删除特殊字符(如果有)并修剪清理列 F 和 D..

主要excel数据

我的以下代码不起作用

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参数。 因此,字符串必须放在一个数组中,然后替换每个数组元素。 另一个问题:“*”必须转义,如果你只想替换这个字符 否则,所有内容都将替换为 null 字符串:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM