【问题标题】:How to delete all rows of a multiple entry even if just one row meets defined criteria即使只有一行符合定义的条件,如何删除多个条目的所有行
【发布时间】:2018-05-11 02:22:32
【问题描述】:

下面是我正在使用的当前(不完整)代码,它可以很好地删除任何给定的行,但我真正需要做的是识别符合某些条件的行:
列中的单元格值L > 90%

M 列中的单元格值 > 90%

如果其中任何一个为真,我需要在 G 列的同一行中找到单元格值,并删除 G 列中包含相同值的所有行。

   Sub sbDelete_Rows_Based_On_Multiple_Criteria()
    Dim lRow As Long
    Dim iCntr As Long
    lRow = Cells(Rows.Count, "G").End(xlUp).Row
    For iCntr = lRow To 2 Step -1
        If Cells(iCntr, "L") > 0.90 OR Cells(iCntr, "M") > 0.90 Then
            Cells(iCntr, "G").EntireRow.Delete
        End If
    Next iCntr
  End Sub

--

我希望在我的示例中实现的结果是唯一未删除的序列号是 1910910

提前感谢您的帮助。

【问题讨论】:

  • 您可以添加一个帮助列,如果满足您的条件,则返回 col G 值(否则为空白),然后对该列进行过滤并删除其中包含值的任何内容。

标签: excel vba


【解决方案1】:
Sub ToDelete()

    Dim last_row&

    '// NOTE! The code assumes that range:
    '// 1) starts in column A
    '// 2) ends in column O
    last_row = Cells(Rows.Count, "G").End(xlUp).Row
    '// Helper column 1
    With Range("P2:P" & last_row)
        .Formula = "=IF(OR(M2>0.9,L2>0.9),1,0)"
        .Value = .Value 'Overwrite formula
    End With
    '// Helper column 2
    With Range("Q2:Q" & last_row)
        .Formula = "=IF(SUMIF(G:G,G2,P:P)>0,1,0)"
        .Value = .Value 'Overwrite formula
    End With

    Rows(1).CurrentRegion.AutoFilter Field:=17, Criteria1:=1
    Rows("2:" & last_row).EntireRow.Delete
    ActiveSheet.AutoFilterMode = False 'Remove filter
    Columns("P:Q").Delete 'Remove helper columns

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    相关资源
    最近更新 更多