如果细胞如果条件遵守,如何删除行

如果行的单元格范围符合if条件,我创build了一个macros来删除整行。 到目前为止的问题是,macros实际上并没有删除所有应该删除的行,我不知道为什么。 我已经testing了很多次,但没有结果。 我应该提到,范围是从另一个工作表复制粘贴,但我已经使这部分工作。 所以,我不认为那里有问题。 我提供了我的Excel表格和下面的代码的截图。

在这里输入图像说明

Sub a() Dim lastrow3 As Long Sheets.Add.Name = "Report_Copy" Worksheets("Report").Cells.Copy With Worksheets("Report_Copy") .Cells.PasteSpecial xlValues .Cells.PasteSpecial xlFormats End With With Worksheets("Report_Copy").UsedRange .Value = .Value End With Dim i As Long With Sheets("Report_Copy") lastrow3 = .Cells(.Rows.Count, "K").End(xlUp).Row For i = lastrow3 To 25 Step -1 Set cell = .Range("L" & i) If WorksheetFunction.CountIf(.Range(cell, cell.Offset(0, 9)), "<0.5") = 10 Then cell.EntireRow.Delete End If Next i End With End Sub 

删除行时,您需要向后循环。

使用下面的循环,并将其replace为最后一个循环:

 Dim i As Long With Sheets("Report_Copy") lastrow3 = .Cells(.Rows.Count, "K").End(xlUp).Row For i = lastrow3 To 25 Step -1 Set cell = .Range("L" & i) If cell.Value < 0.5 And cell.Offset(0, 1).Value < 0.5 And cell.Offset(0, 2).Value < 0.5 And cell.Offset(0, 3).Value < 0.5 And cell.Offset(0, 4).Value < 0.5 And cell.Offset(0, 5).Value < 0.5 And cell.Offset(0, 6).Value < 0.5 And cell.Offset(0, 7).Value < 0.5 And cell.Offset(0, 8).Value < 0.5 And cell.Offset(0, 9).Value < 0.5 Then cell.EntireRow.Delete End If Next i End With 

注意:通过使用CountIf函数,可以使用相同的标准CountIf <0.5来重新计算多个单元的条件:

 If WorksheetFunction.CountIf(.Range(cell, cell.Offset(0, 9)), "<0.5") = 10 Then 

当删除行索引移动到循环中的下一个元素。 如果两行符合要求彼此相邻,则底行不会被移除。

用于下一个循环。 示例删除range(A1:A4)值为1的所有行:

 Public Sub test() Dim cell As Range For i = 1 To Range("A1:A4").Rows.Count Set cell = Range("a" & i) If cell = 1 Then cell.EntireRow.Delete i = i - 1 End If Next i End Sub