如果满足所有多个条件,则删除所有行或列

如果满足所有多个条件,则删除所有行或列

执行此操作的 VB 代码或宏是什么——

几个月前的一个问题

“这 3 个条件是‘低于一定百分比/数字’。必须满足所有条件。”

似乎不够具体,所以要求提供详细信息,例如

如果 A2 <20%
如果 B2 >30%
如果 C2 >10
如果以上 3 个条件均满足,
则删除第 2 行

整个过程在随后的每一行上重复

答案1

循环可以工作,但自动过滤器的工作速度会更快。假设您在行 (1) 中有标题并且没有空行,这将删除符合条件的行:

Sub autofilterAndDelete()
dim lLastRow as long
application.screenupdating=false

lLastRow=cells(rows.count,1).end(xlup).row

With Range("A1:C1").resize(lLastRow)
    .AutoFilter field:=1, Criteria1:="<0.2"
    .AutoFilter field:=2, Criteria1:=">.3"        
    .AutoFilter field:=3, Criteria1:=">10"

    if application.worksheetfunction.subtotal(3,.columns(1))>1 then _
        .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete

    .AutoFilter
End With
application.screenupdating=true    
End Sub

答案2

以下是执行您所说的操作的示例代码,使用 .2 作为 20% 等,因为这是实际值。将 Sheets(1) 替换为您要执行此操作的实际工作表。

Sub DeleteRows()
    Dim x As Long
    With Sheets(1)
        For x = .UsedRange.Rows.Count To 2 Step -1
            If .Cells(x, 1) < 0.2 And .Cells(x, 2) > 0.3 And .Cells(x, 3) > 10 Then
                .Rows(x).Delete
            End If
        Next
    End With
End Sub

相关内容