【问题标题】:Delete Row Based on Partial Contents of Cell根据单元格的部分内容删除行
【发布时间】:2015-02-12 07:15:40
【问题描述】:

我正在尝试创建一个 VBA 脚本,该脚本将遍历我的电子表格中的“A”列,并删除任何以包含“Div Code:”字样的单元格开头的行 问题是,单元格在“Div 代码”之后包含更多文本,我无法弄清楚如何使 .replace 函数对部分内容起作用。 到目前为止,这是我所拥有的:

Sub FindDivCode()


  With Intersect(Columns("A"), ActiveSheet.UsedRange)
    .Replace "Div Code", "#N/A", xlPart
    .Replace "Date", "#N/A", xlPart
    .SpecialCells(xlConstants, xlErrors).EntireRow.Delete
  End With
End Sub

此脚本适用于“日期”单元格,但不适用于“Div 代码”单元格。 任何帮助将不胜感激!

保罗

【问题讨论】:

    标签: vba excel replace


    【解决方案1】:

    您可以遍历 A 列的单元格,并在检查单元格 Ax 是否以“Div Code”开头后,删除整行:

    For j = Range("A1").End(xlDown).Row To 1 Step -1
        If InStr(Range("A" & j).Value,"Div Code") = 1 Then
            Rows(j).Delete
        End If
    Next j
    

    【讨论】:

    • 如果您正在循环并删除行,您想使用For j = Range("A1").End(xlDown).Row To 1 Step -1 向后退循环并删除j = j - 1 行。
    • @D_Zab 谢谢,这实际上更有意义。我编辑了我的答案。
    • 您可以改用InStr 来简化条件语句
    • @Jeanno 也谢谢你,我写的代码太快了。它实际上是用 InStr 简化的,我已经做了你建议的编辑。
    • Il n'y a pas de quoi!
    【解决方案2】:

    这是对 Matteo 提供的解决方案的扩展。应该归功于他

        Sub FindDivCode2()
            For j = Range("A1").End(xlDown).Row To 1 Step -1
                If InStr(Range("A" & j).Value,"Div Code") = 1 Or  InStr(Range("A" & j).Value,"Date") = 1Then
                    Rows(j).Delete
                End If
            Next j
        End Sub
    

    【讨论】:

    • 再次感谢 Jeanno,这看起来更接近工作,但我仍然在第三行收到“运行时错误 '13':类型不匹配”。知道是什么原因造成的吗?
    猜你喜欢
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 2018-11-11
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多