【问题标题】:Delete entire rows that meet a criteria [closed]删除符合条件的整行[关闭]
【发布时间】:2020-08-06 19:18:35
【问题描述】:

如果它们符合某些条件,我会坚持编写代码来删除整行。 就我而言,我希望删除所有至少具有 #N/A Invalid Security 列的行。 编写代码的最佳方法是什么?我应该包含一个过滤器然后删除吗? 谢谢

【问题讨论】:

  • 您可以遍历每一行中的每一列,并在一个数组中记录行数。并使用 for 循环删除行
  • 这里有很多关于如何做到这一点的例子......只要记住后退一步。
  • 这能回答你的问题吗? Excel VBA - Delete Rows Based on Criteria

标签: excel vba


【解决方案1】:

请尝试下一个代码。如果我没记错的话,“#N/A Invalid Security”不是错误,它是您询问的来源的答案。因此,像字符串一样使用它应该以这种方式工作:

Sub DeleteRowByCriteria()
  Dim sh As Worksheet, arr As Variant, rngDel As Range, i As Long, j As Long
    Set sh = ActiveSheet ' use here your sheet
    arr = sh.UsedRange.value
     For i = 1 To UBound(arr, 1)
        For j = 1 To UBound(arr, 2)
            If arr(i, j) = "#N/A Invalid Security" Then
                If rngDel Is Nothing Then
                    Set rngDel = sh.Cells(i, j): Exit For
                Else
                    Set rngDel = Union(rngDel, sh.Cells(i, j)): Exit For
                End If
            End If
        Next
     Next i
     If Not rngDel Is Nothing Then rngDel.EntireRow.Delete
End Sub

【讨论】:

  • 工作,太棒了!谢谢!!!
  • @Vir:很高兴能帮到你!但是,在这种情况下,当答案解决了您的问题时,最好勾选代码左侧的复选框,以使其接受答案。这样,搜索类似问题的人就会知道答案有效......
  • 知道了!新手!
  • @Vir:你知道了,但你没有勾选文本框以使其接受答案......
猜你喜欢
  • 2020-09-05
  • 2019-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-24
  • 1970-01-01
  • 2019-08-31
相关资源
最近更新 更多