Solved

Excel - delete rows - if condition

Posted on 2011-02-23
10
341 Views
Last Modified: 2012-05-11
Hi,

Is there a way to delete rows from a worksheet if the cell in column A is blank? This would be performed on all sheets in the workbook, so I am not sure if there is a macro mechanism for this.

Thank you
0
Comment
Question by:tahirih
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
  • 2
  • +2
10 Comments
 
LVL 10

Expert Comment

by:cdebel
ID: 34963591
I don't know any function that would perform that in Excel.

I can write a macro for you if you want
0
 

Author Comment

by:tahirih
ID: 34963645
Only if you have the time - this would be wonderful.

Again, I would want to remove rows from all sheets where the cell in column A for that row is blank.

Thank you.
0
 
LVL 81

Accepted Solution

by:
byundt earned 350 total points
ID: 34963666
Here is a macro using the SpecialCells method to get the blank cells.

Brad
Sub BlankRowDeleter()
Dim ws As Worksheet
Dim rg As Range
For Each ws In ActiveWorkbook.Worksheets
    Set rg = Nothing
    On Error Resume Next
    Set rg = ws.Columns("A:A").SpecialCells(xlCellTypeBlanks)
    On Error GoTo 0
    If Not rg Is Nothing Then rg.EntireRow.Delete
Next
End Sub

Open in new window

0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 10

Expert Comment

by:cdebel
ID: 34963678
well, byundt just shifted me... his solution work just fine
0
 
LVL 81

Expert Comment

by:byundt
ID: 34963691
The manual equivalent to the macro is:
1) Select column A
2) F5 and click the Special Cells... button at the bottom of the resulting dialog
3) Choose the option for Blanks
4) Use the Home...Delete...Delete Sheet Rows menu item (in Excel 2010)
0
 
LVL 17

Assisted Solution

by:gtgloner
gtgloner earned 150 total points
ID: 34963770
Try this code:
Sub deleterow()

    Application.ScreenUpdating = False
 
    Dim i As Long
    i = 1
    Do Until i > Cells(65536, "e").End(xlUp).Row
        If Cells(i, "e").Value = "" Then
            Rows(i).delete
        Else
            i = i + 1
        End If
    Loop
 
    Application.ScreenUpdating = True
 
End Sub

Open in new window

0
 
LVL 17

Expert Comment

by:gtgloner
ID: 34963789
You might have to edit the code depending on the column that you are looking for the blanks in.
0
 

Author Comment

by:tahirih
ID: 34963868
Thank you everyone! I will be revisiting this project in a bit - so your patience is appreciated during the interim.

0
 
LVL 92

Expert Comment

by:Patrick Matthews
ID: 34964744
tahirih,

Brad's suggestion should work quite well.  The only caveat is that if you have >16k rows in your source data, then there is a possibility that SpecialCells will fail.  (SpecialCells fails if it returns >8192 distinct areas.)

The usual workaround for that is to sort the data first.

Patrick
0
 

Author Closing Comment

by:tahirih
ID: 34965737
Thank you everyone.
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Do you use a spreadsheet like Microsoft's Excel?  Have you ever wanted to link out to a non excel file on your computer or network drive?  This is the way I found to do it!
This article describes how to use a set of graphical playing cards to create a Draw Poker game in Excel or VB6.
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

718 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question