Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I have an Excel sheet that has 3 columns. Column 1 is the same throughout -
HQCCA1. What I would like is to start at row 1 and look at Column 3 and if the data in row 1 is XS, then delete the row. Otherwise, go on to the next row and look to see if it is XS, etc through to the end of the sheet. Here is what I wrote and nothing happens (I must admit I tried using a sample to do this.): Sub LoopRange1() x = ActiveCell.Row y = x + 1 Do while Cells(x,1).Value = HQCCA1 If Celss (x,3).Value = "XS" Then Cells(x,1).EntireRow.Delete Else y = y + 1 End If Loop x = x + 1 y = x + 1 End Sub |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
This is one way.
You almost had it. I made a couple of revisions. Option Explicit Sub LoopRange1() Dim x As Long x = 1 'y = x + 1 Do While Cells(x, 1).Value = "HQCCA1" If Cells(x, 3).Value = "XS" Then Cells(x, 1).EntireRow.Delete Else x = x + 1 End If 'y = x + 1 Loop End Sub "Vecchia" wrote: I have an Excel sheet that has 3 columns. Column 1 is the same throughout - HQCCA1. What I would like is to start at row 1 and look at Column 3 and if the data in row 1 is XS, then delete the row. Otherwise, go on to the next row and look to see if it is XS, etc through to the end of the sheet. Here is what I wrote and nothing happens (I must admit I tried using a sample to do this.): Sub LoopRange1() x = ActiveCell.Row y = x + 1 Do while Cells(x,1).Value = HQCCA1 If Celss (x,3).Value = "XS" Then Cells(x,1).EntireRow.Delete Else y = y + 1 End If Loop x = x + 1 y = x + 1 End Sub |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
So if I understand correctly you want to find all instances of XS in Column C
and delete the row? You can give this code a try. It uses find to create a range of all of the XS cells and then delete those rows. It is more efficinet than search all of the cells one at a time. Sub DeleteRows() Dim wks As Worksheet Dim rngFound As Range Dim rngToSearch As Range Dim rngFirst As Range Dim rngToDelete As Range Set wks = ActiveSheet Set rngToSearch = wks.Columns("C") Set rngFound = rngToSearch.Find(What:="XS", LookAt:=xlWhole) If rngFound Is Nothing Then MsgBox "Sorry. Nothing to Delete" Else Set rngFirst = rngFound Set rngToDelete = rngFound Do Set rngToDelete = Union(rngToDelete, rngFound) Set rngFound = rngToSearch.FindNext(rngFound) Loop Until rngFound.Address = rngFirst.Address rngToDelete.EntireRow.Delete End If End Sub -- HTH... Jim Thomlinson "Vecchia" wrote: I have an Excel sheet that has 3 columns. Column 1 is the same throughout - HQCCA1. What I would like is to start at row 1 and look at Column 3 and if the data in row 1 is XS, then delete the row. Otherwise, go on to the next row and look to see if it is XS, etc through to the end of the sheet. Here is what I wrote and nothing happens (I must admit I tried using a sample to do this.): Sub LoopRange1() x = ActiveCell.Row y = x + 1 Do while Cells(x,1).Value = HQCCA1 If Celss (x,3).Value = "XS" Then Cells(x,1).EntireRow.Delete Else y = y + 1 End If Loop x = x + 1 y = x + 1 End Sub |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
It didn't work. I have header rows throughout the sheet should I delete them?
"tjh" wrote: This is one way. You almost had it. I made a couple of revisions. Option Explicit Sub LoopRange1() Dim x As Long x = 1 'y = x + 1 Do While Cells(x, 1).Value = "HQCCA1" If Cells(x, 3).Value = "XS" Then Cells(x, 1).EntireRow.Delete Else x = x + 1 End If 'y = x + 1 Loop End Sub "Vecchia" wrote: I have an Excel sheet that has 3 columns. Column 1 is the same throughout - HQCCA1. What I would like is to start at row 1 and look at Column 3 and if the data in row 1 is XS, then delete the row. Otherwise, go on to the next row and look to see if it is XS, etc through to the end of the sheet. Here is what I wrote and nothing happens (I must admit I tried using a sample to do this.): Sub LoopRange1() x = ActiveCell.Row y = x + 1 Do while Cells(x,1).Value = HQCCA1 If Celss (x,3).Value = "XS" Then Cells(x,1).EntireRow.Delete Else y = y + 1 End If Loop x = x + 1 y = x + 1 End Sub |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
This worked great! I couldn't believe how fast it got rid of those rows!
Thank you so much! "Jim Thomlinson" wrote: So if I understand correctly you want to find all instances of XS in Column C and delete the row? You can give this code a try. It uses find to create a range of all of the XS cells and then delete those rows. It is more efficinet than search all of the cells one at a time. Sub DeleteRows() Dim wks As Worksheet Dim rngFound As Range Dim rngToSearch As Range Dim rngFirst As Range Dim rngToDelete As Range Set wks = ActiveSheet Set rngToSearch = wks.Columns("C") Set rngFound = rngToSearch.Find(What:="XS", LookAt:=xlWhole) If rngFound Is Nothing Then MsgBox "Sorry. Nothing to Delete" Else Set rngFirst = rngFound Set rngToDelete = rngFound Do Set rngToDelete = Union(rngToDelete, rngFound) Set rngFound = rngToSearch.FindNext(rngFound) Loop Until rngFound.Address = rngFirst.Address rngToDelete.EntireRow.Delete End If End Sub -- HTH... Jim Thomlinson "Vecchia" wrote: I have an Excel sheet that has 3 columns. Column 1 is the same throughout - HQCCA1. What I would like is to start at row 1 and look at Column 3 and if the data in row 1 is XS, then delete the row. Otherwise, go on to the next row and look to see if it is XS, etc through to the end of the sheet. Here is what I wrote and nothing happens (I must admit I tried using a sample to do this.): Sub LoopRange1() x = ActiveCell.Row y = x + 1 Do while Cells(x,1).Value = HQCCA1 If Celss (x,3).Value = "XS" Then Cells(x,1).EntireRow.Delete Else y = y + 1 End If Loop x = x + 1 y = x + 1 End Sub |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
It is fast for two reasons...
1. It uses find instead so looking at each cell individually. 2. It just does one big delete at the end. Deletes are time consuming. Glad to help. -- HTH... Jim Thomlinson "Vecchia" wrote: This worked great! I couldn't believe how fast it got rid of those rows! Thank you so much! "Jim Thomlinson" wrote: So if I understand correctly you want to find all instances of XS in Column C and delete the row? You can give this code a try. It uses find to create a range of all of the XS cells and then delete those rows. It is more efficinet than search all of the cells one at a time. Sub DeleteRows() Dim wks As Worksheet Dim rngFound As Range Dim rngToSearch As Range Dim rngFirst As Range Dim rngToDelete As Range Set wks = ActiveSheet Set rngToSearch = wks.Columns("C") Set rngFound = rngToSearch.Find(What:="XS", LookAt:=xlWhole) If rngFound Is Nothing Then MsgBox "Sorry. Nothing to Delete" Else Set rngFirst = rngFound Set rngToDelete = rngFound Do Set rngToDelete = Union(rngToDelete, rngFound) Set rngFound = rngToSearch.FindNext(rngFound) Loop Until rngFound.Address = rngFirst.Address rngToDelete.EntireRow.Delete End If End Sub -- HTH... Jim Thomlinson "Vecchia" wrote: I have an Excel sheet that has 3 columns. Column 1 is the same throughout - HQCCA1. What I would like is to start at row 1 and look at Column 3 and if the data in row 1 is XS, then delete the row. Otherwise, go on to the next row and look to see if it is XS, etc through to the end of the sheet. Here is what I wrote and nothing happens (I must admit I tried using a sample to do this.): Sub LoopRange1() x = ActiveCell.Row y = x + 1 Do while Cells(x,1).Value = HQCCA1 If Celss (x,3).Value = "XS" Then Cells(x,1).EntireRow.Delete Else y = y + 1 End If Loop x = x + 1 y = x + 1 End Sub |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Deleting Rows - only deletes content | Excel Discussion (Misc queries) | |||
Macro that deletes rows from cell containing End to end of data. | Excel Discussion (Misc queries) | |||
shared file adds or deletes rows | Excel Discussion (Misc queries) | |||
Copy to in Adv filter deletes data in lower rows | Excel Discussion (Misc queries) | |||
Macro that deletes certain rows and not others | Excel Programming |