Code to keep certain rows

Dazzawm

Well-known Member
Joined
Jan 24, 2011
Messages
3,786
Office Version
  1. 365
Platform
  1. Windows
Hi I need a code that will look in column J and keep any row that has (WSL) in the cell and delete all the others. (WSL) or (wsl) will be among other data in the cell, either at the beginning, middle or end so I cant do a sort. Thanks.
 

Excel Facts

Why does 9 mean SUM in SUBTOTAL?
It is because Sum is the 9th alphabetically in Average, Count, CountA, Max, Min, Product, StDev.S, StDev.P, Sum, VAR.S, VAR.P.
Hi

Code:
Dim r As Range
 
Set r = Intersect(Activesheet.UsedRange,Range("J:J"))
 
Activesheet.Autofiltermode = False
 
r.Autofilter Field:=1,Criteria1:="<>*WSL*"
 
r.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
 
Activesheet.AutofilterMode = False
 
Upvote 0
Try

Code:
Sub test()
Dim LR As Long, i As Long
LR = Range("J" & Rows.Count).End(xlUp).Row
For i = LR To 1 Step -1
    If Not UCase(Range("J" & i).Value) Like "*WSL*" Then Rows(i).Delete
Next i
End Sub
 
Upvote 0
Thanks both, Richard yours worked and VoG yours deleted everything!
 
Upvote 0
I believe there is a line or two of code that will display a msgbox at the end telling me how many rows have been deleted and how many have been kept. What are these please? Thanks.
 
Upvote 0
I don't know how to do it with Richard's code.

But i've modified the code by VoG slightly

Code:
Sub test()
Dim LR As Long, i As Long
Dim Del As Long
Dim kept As Long
Del = 0
kept = 0
LR = Range("J" & Rows.Count).End(xlUp).Row
For i = LR To 1 Step -1
    If UCase(Range("J" & i).Value) Like "*WSL*" Then
    Rows(i).Delete
    Del = Del + 1
    Else
    kept = kept + 1
    End If
Next i
MsgBox Del & " rows deleted and " & kept & " rows kept."
End Sub

Sorry if it doesn't help.
 
Upvote 0
Try like this

Code:
Dim LR1 As Long, LR2 As Long
LR1 = Range("J" & Rows.Count).End(xlUp).Row
'
'code for deleting
'
LR2 = Range("J" & Rows.Count).End(xlUp).Row
MsgBox LR1 - LR2 & " rows deleted" & vbNewLine & LR2 & " rows retained", vbInformation
 
Upvote 0
Try like this

Code:
Dim LR1 As Long, LR2 As Long
LR1 = Range("J" & Rows.Count).End(xlUp).Row
'
'code for deleting
'
LR2 = Range("J" & Rows.Count).End(xlUp).Row
MsgBox LR1 - LR2 & " rows deleted" & vbNewLine & LR2 & " rows retained", vbInformation

Is this for use with Richards code?
 
Upvote 0

Forum statistics

Threads
1,224,538
Messages
6,179,412
Members
452,912
Latest member
alicemil

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top