EXCEL VBA:满足双重条件,然后删除行

时间:2020-07-02 20:55:22

标签: excel vba conditional-statements

伙计,

我要满足两个条件。一个:在第一列中,数字可以是1、2或2,3或3,4和两个:在最后一行中,最后一列需要为F,F。如果满足此条件,则需要从第一列中删除具有较大整数的整个行。该检查必须一次进行两行。 我似乎无法解决这个问题。你们都有一些提示吗?

谢谢!

编辑:

0级保持不变并固定。

Picture 2

1 个答案:

答案 0 :(得分:0)

这将受益于数组检查,而不是在循环内部删除(使用UNION)。无论哪种方式,这都可以根据您的条件进行

注意:我将Column A用于lvl,将Column B用于Stock,因此您需要使其适合数据。这也假设相关数据从第3行开始(即,忽略标头的第1行,并忽略lvl 0值的第2行)


Sub try()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet2")
Dim lr As Long, i As Long
Dim v1 As Range, v2 As Range

lr = ws.Range("A" & ws.Rows.Count).End(xlUp).Row

For i = lr To 3 Step -2
    Set v1 = ws.Range("A" & i)
    Set v2 = ws.Range("A" & i - 1)
    
    If (v1 = 1 And v2 = 2) Or (v1 = 2 And v2 = 1) Or _
       (v1 = 2 And v2 = 3) Or (v1 = 3 And v2 = 2) Or _
       (v1 = 3 And v2 = 4) Or (v1 = 4 And v2 = 3) Then
       
        If ws.Range("B" & i) = "F" And ws.Range("B" & i - 1) = "F" Then
            If v1 > v2 Then
                ws.Range("A" & v1.Row).EntireRow.Delete
            Else
                ws.Range("A" & v2.Row).EntireRow.Delete
            End If
        End If
    End If
  Set v1 = Nothing
  Set v2 = Nothing
Next i

End Sub

这是我使用的设置,因此范围和列均基于这张照片。您将需要进行更新以适合您的电子表格。红色的项目已通过符合您条件的宏删除了

enter image description here

相关问题