ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   deleting rows (https://www.excelbanter.com/excel-programming/332795-deleting-rows.html)

childofthe1980s

deleting rows
 
Hello:

I have a huge spreadsheet of over 20,000 rows. I want to delete any row
that has a cell that contains the phrase "Ending Balance". Is there a way to
tell Excel to delete such rows, without my having to delete each of the rows
one by one?

If I manually delete these rows, it will take hours.

Thanks!

childofthe1980s

Ron de Bruin

deleting rows
 
Hi childofthe1980s

See
http://www.rondebruin.nl/delete.htm

If you can check one column use the filter example (faster)
If not use the loop like this to check the whole row

Sub Example1()
Dim Firstrow As Long
Dim Lastrow As Long
Dim Lrow As Long
Dim CalcMode As Long

With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With

Firstrow = ActiveSheet.UsedRange.Cells(1).Row
Lastrow = ActiveSheet.UsedRange.Rows.Count + Firstrow - 1
With ActiveSheet
.DisplayPageBreaks = False
For Lrow = Lastrow To Firstrow Step -1
If Application.WorksheetFunction.CountIf(.Rows(Lrow), "Ending Balance") 0 Then .Rows(Lrow).Delete
' Delete each row if the value "Ending Balance" exist in the row (It will look in the whole row)
Next
End With
With Application
.ScreenUpdating = True
.Calculation = CalcMode
End With
End Sub





--
Regards Ron de Bruin
http://www.rondebruin.nl


"childofthe1980s" wrote in message
...
Hello:

I have a huge spreadsheet of over 20,000 rows. I want to delete any row
that has a cell that contains the phrase "Ending Balance". Is there a way to
tell Excel to delete such rows, without my having to delete each of the rows
one by one?

If I manually delete these rows, it will take hours.

Thanks!

childofthe1980s




Tom Ogilvy

deleting rows
 
Jim Thomlinson recently posted code to do this

Sub DeleteUnwanted(ByVal DeleteWord As String)
Dim wks As Worksheet
Dim rngToSearch As Range
Dim rngCurrent As Range
Dim rngDelete As Range
Dim rngFirst As Range

Set wks = Sheets("Sheet1")
Set rngToSearch = wks.Cells

Set rngCurrent = rngToSearch.Find(DeleteWord)
If Not rngCurrent Is Nothing Then
Set rngDelete = rngCurrent
Set rngFirst = rngCurrent
Do
Set rngDelete = Union(rngCurrent, _
rngCurrent.Offset(1,0), rngDelete)
Set rngCurrent = rngToSearch.FindNext(rngCurrent)
Loop Until rngCurrent.Address = rngFirst.Address
rngDelete.EntireRow.Delete
End If
End Sub

You can find similar in the help example for findnext, but Jim had altered
the basic approach to collect all the found cells and delete at once - which
should be faster.

For consistency, you should set all the options for the Find command. Such
as Lookat:=xlPart

expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection)


--
Regards,
Tom Ogilvy

"childofthe1980s" wrote in
message ...
Hello:

I have a huge spreadsheet of over 20,000 rows. I want to delete any row
that has a cell that contains the phrase "Ending Balance". Is there a way

to
tell Excel to delete such rows, without my having to delete each of the

rows
one by one?

If I manually delete these rows, it will take hours.

Thanks!

childofthe1980s





All times are GMT +1. The time now is 10:36 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com