根据两列的值删除行

时间:2019-07-23 09:03:45

标签: excel vba

我想保留excel中所有只包含E列中的“ ECGS2A”或“ ECGS2B”以及M列中的“客户选择加入”的行,但是很难尝试使用不同的VBA代码。

我需要在第4行保留标题,但是在尝试添加除E列以外的范围时:

j = Range("E" & Rows.Count).End(xlUp).Row

出现错误或“运行时错误'1004':object_Global'的'范围'方法失败

' Deleting entire rows with MyTarget
Sub myDeleteRows2()

Const MyTarget = "*ECGS2A*"

Dim Rng As Range, DelCol As New Collection, x
Dim I As Long, j As Long, k As Long

' Calc last row number
j = Range("E" & Rows.Count).End(xlUp).Row

' Collect rows range with MyTarget
For I = 1 To j
If WorksheetFunction.CountIf(Rows(I), MyTarget) = 0 Then 'changed from > 0
k = k + 1
If k = 1 Then
Set Rng = Rows(I)
Else
Set Rng = Union(Rng, Rows(I))
If k >= 100 Then
DelCol.Add Rng
k = 0
End If
End If
End If
Next
If k > 0 Then DelCol.Add Rng

' Turn off screen updating and events
Application.ScreenUpdating = False
Application.EnableEvents = False

' Delete rows with MyTarget
For Each x In DelCol
x.Delete
Next


' Update UsedRange
With ActiveSheet.UsedRange: End With

' Restore screen updating and events
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub

也尝试过

Sub DeleteRowsBasedOnMultipleCriteria()

lRow = 13 ' Your last row with the data

Do While lRow >= 1

'1=Column A,6=Column F, 18=Column R
 If Cells(lRow, 5) = "ECGS9" _
        Or Cells(lRow, 13) = "Customer Opt Out" Then
        Rows(lRow).Delete
 End If

lRow = lRow - 1
Loop

End Sub

我希望E列仅显示ECGS2A或ECGS2B以及E列为Customer Opt In的任何内容。如果这些列显示的内容不是上述内容,那么我希望将其删除。

enter image description here

1 个答案:

答案 0 :(得分:0)

Sub Macro1()
Dim LRow As Long, i As Long
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets("Sheet1") 'Change to your sheet name
    LRow = .Range("E" & .Rows.Count).End(xlUp).Row
    For i = LRow To 5 Step -1
        If Not ((.Cells(i,5) Like "ECGS2A*" Or .Cells(i,5) Like "ECGS2B*") And .Cells(i, 13) Like "Customer Opt In*")  Then
            .Rows(i).Delete
        End If
    Next i
End With
Application.ScreenUpdating = True
End Sub
相关问题