Delete rows if specific columns contain cells with "N/A"

lekh0602

New Member
Joined
Jul 9, 2014
Messages
33
Hi,

I would like to set up a button where cells with "N/A" in specific columns will then delete the relevant row - the columns are Z, AA and AB.

When I use the code below it does not seem to work.

The code is the following:

Sub Button3_Click()
'Declare variables
Dim rngFound As Range 'Used for the find loop
Dim rngDel As Range 'Used to store matching rows
Dim strFirst As String 'Used to store the first cell address of the find loop to prevent infinite loop


'Search for #N/A in column C
Set rngFound = Columns("Z").Find("#N/A", Cells(Rows.Count, "Z"), xlValues, xlWhole)


'Make sure something was found
If Not rngFound Is Nothing Then
'Found something, record first cell address
strFirst = rngFound.Address


'Start loop
Do
'Check if cells in column Z, AA, and AB are all #N/A
If Cells(rngFound.Row, "Z").Text = "#N/A" _
And Cells(rngFound.Row, "AA").Text = "#N/A" _
And Cells(rngFound.Row, "AB").Text = "#N/A" Then


'Found they are all #N/A, store the row in rngDel
If rngDel Is Nothing Then Set rngDel = rngFound Else Set rngDel = Union(rngDel, rngFound)


End If


'Advance the loop to the next cell with #N/A in column Z
Set rngFound = Columns("Z").Find("#N/A", rngFound, xlValues, xlWhole)


'Exit loop when back to the first cell
Loop While rngFound.Address <> strFirst
End If


'If rngDel has anything in it, delete all of its rows
If Not rngDel Is Nothing Then rngDel.EntireRow.Delete


'Object variable cleanup
Set rngFound = Nothing
Set rngDel = Nothing


End Sub

I would appreciate any inputs to what I am doing wrong.

Thanks.
 

Excel Facts

Get help while writing formula
Click the italics "fx" icon to the left of the formula bar to open the Functions Arguments dialog. Help is displayed for each argument.
This would delete any error in column Z , AA , AB

Code:
Sub Button3_Click()
Dim Lrow As Long
Lrow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Do While Lrow > 0
    If IsError(Cells(Lrow, 26)) Or IsError(Cells(Lrow, 27)) Or IsError(Cells(Lrow, 28)) Then
        Rows(Lrow).Delete
    End If
    Lrow = Lrow - 1
Loop
End Sub
 
Upvote 0
Hi vds1,

The spreadsheet I am working on is quite extensive with more than 30,000 rows from column A to AE and the code suddenly doesn't seem to work = the code starts running but then Excel stops responding so I need to restart Excel. Is there any way of optimising the code so Excel will work less hard and I can get the code to work in my spreadsheet?

Thanks.
 
Upvote 0
Try,

Code:
Sub Button3_Click()
Dim Lrow As Long
Dim i As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error GoTo Err_Desc
Lrow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
For i = 2 To Lrow
    If IsError(Cells(i, 26)) Or IsError(Cells(i, 27)) Or IsError(Cells(i, 28)) Then
        Cells(i, 33) = 0
    Else
        Cells(i, 33) = 1
    End If
Next i
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=Range( _
        "AG1:AG" & Lrow), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
With ActiveWorkbook.ActiveSheet.Sort
        .SetRange Range("A1:AG" & Lrow)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
End With
For i = Lrow To 2 Step -1
    If Cells(i, 33) = 0 Then
        Rows(i).Clear
    Else
        Exit For
    End If
Next i
Range("AG1:AG" & Lrow).Clear
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Exit Sub
Err_Desc:
MsgBox Err.Description & " : " & Err.Number
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
 
Upvote 0

Forum statistics

Threads
1,214,561
Messages
6,120,234
Members
448,951
Latest member
jennlynn

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