执行此操作的 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