【问题标题】:VBA Loop that removes punctuation from a given range从给定范围中删除标点符号的 VBA 循环
【发布时间】:2020-03-17 22:23:35
【问题描述】:

我对 VBA 很陌生,我需要创建一个循环,从字符串中删除某些标点符号,该标点符号在我的电子表格中被引用为值 A2:A33。这就是我到目前为止所拥有的,在替换功能上苦苦挣扎。任何帮助将不胜感激!

Function CleanDescription(rawDescription As String) As String
Dim punctuationRng As Range
Set punctuationRng = Worksheets("ToRemove").Range("A2:A33")

Dim cleanDesc As String
cleanDesc = rawDescription

For i = 1 To punctuationRng.Count
cleanDesc = Replace(cleanDesc, punctuationRng, "")
Next i

CleanDescription = cleanDesc
End Function

【问题讨论】:

    标签: excel vba loops


    【解决方案1】:

    您可以用For Each 替换字符串中存在的一系列单元格中的每个值:

    Function CleanDescription(rawDescription As String) As String
    Dim punctuationRng As Range
    Set punctuationRng = Worksheets("ToRemove").Range("A2:A33")
    
    Dim cleanDesc As String
    cleanDesc = rawDescription
    
    For Each punctuationCell In punctuationRng
        cleanDesc = Replace(cleanDesc, punctuationCell.Value, "")
    Next punctuationCell
    
    CleanDescription = cleanDesc
    End Function
    

    如果您不喜欢 For Each,您也可以通过 For Loop 来实现它:

    Dim cellValue As String
    For r = 1 to punctuationRng.Rows.Count
        For c = 1 to punctuationRng.Columns.Count
            cellValue = punctuationRng.cells(r, c).Value
            cleanDesc = Replace(cleanDesc, cellValue, "")
        Next c
    Next r
    

    【讨论】:

    • 如果我正确理解了这个问题,那么punctuationRng 不是需要进行替换的地方。它包含需要在rawDescription 中替换的字符串 :)
    • @SiddharthRout 正确,我误解了这个问题 - 刚刚更新了我的答案
    【解决方案2】:

    您可以使用For Each Loop,如下所示

    Function CleanDescription(rawDescription As String) As String
        Dim punctuationRng As Range
        Set punctuationRng = Worksheets("ToRemove").Range("A2:A33")
    
        Dim cleanDesc As String
        cleanDesc = rawDescription
    
        Dim aCell As Range
    
        For Each aCell In punctuationRng
            cleanDesc = Replace(cleanDesc, aCell.Value2, "")
        Next aCell
    
        CleanDescription = cleanDesc
    End Function
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-11
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多