Excel VBA根据多列条件删除行

我试图根据一行是否满足不同列中的2个条件,即如果D列中的值大于-2,并且F列的相邻单元格中的值大于-2,或NA,然后删除整个行。 如果只有1条或者没有条件满足,那么它应该保持该行。 以下是我到目前为止。 当我运行这个macros时,它会一直持续下去,但是我不明白这是怎么回事,因为它看起来不像是一个无休止的循环(为了公平,我只让它坐了45分钟,但是在那里只有大约15,000个数据行,因此实际上不应超过10分钟)。 任何帮助将不胜感激。

Sub Cuts() Dim wb1 As Workbook, sh1 As Worksheet Dim lastrow1 As Long, lastrow2 As Long Set wb1 = Workbooks(“ovaryGisticARRAYRNAseq.final.xlsx") Set sh1 = wb1.Sheets(“Cuts”) lastrow1 = sh1.Cells(Rows.Count, 4).End(xlUp).Row lastrow2 = sh1.Cells(Rows.Count, 6).End(xlUp).Row For i = 1 To lastrow1 For j = 1 To lastrow2 If sh1.Cells(i, 4).Value > -2 Then If sh1.Cells(j, 6).Value > -2 Then sh1.Cells(j, 6).EntireRow.Delete ElseIf sh1.Cells(j, 6).Value = “NA” Then sh1.Cells(j, 6).EntireRow.Delete End If End If Next j Next i End Sub 

我不知道如何处理列标题中的空白单元格或文本,但我会提出此修改。

 Sub Cuts() Dim wb1 As Workbook Dim lr As Long, i As Long Set wb1 = Workbooks(“ovaryGisticARRAYRNAseq.final.xlsx") With wb1.Sheets("Cuts") lr = Application.Max(.Cells(Rows.Count, 4).End(xlUp).Row, _ .Cells(Rows.Count, 6).End(xlUp).Row) For i = lr To 1 Step -1 If .Cells(i, 4).Value > -2 And _ (.Cells(i, 6).Value > -2 Or UCase(.Cells(i, 6).Value) = "NA") Then .Rows(i).EntireRow.Delete End If Next i End With End Sub