Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.misc
external usenet poster
 
Posts: 3,101
Default Delete Macro with OR/ELSE condition

I am a beginner a writing Macros in Excel. I have a Macro that deletes any
record that does not equal "Server/Midrange Software" in column M. I need to
expand this to include other criteria. Such as,

if column M does not equal "Server/Midrange Software" or does not equal
"Data Telecom" then delete the record.

The Macro I have currently is.....

Sub TryMe()
'Deletes rows where the value in column M are not equal to Server/Midrange
Software
Dim RowMdx As Long
Dim LastRow As Long

LastRow = Cells(Rows.Count, "M").End(xlUp).Row

For RowMdx = LastRow To 1 Step -1
If Cells(RowMdx, "M").Value < "Server/Midrange Software" Then
Rows(RowMdx).Delete

End If
Next RowMdx
End Sub

How do I put the OR condition in this for Data Telecom and possibly more
conditions?

Any help appreciated,,,,,,thanks

--
Mike
  #2   Report Post  
Posted to microsoft.public.excel.misc
external usenet poster
 
Posts: 35,218
Default Delete Macro with OR/ELSE condition

If the number of options is small, you can use something like:

if lcase(Cells(RowMdx, "M").Value) = lcase("Server/Midrange Software") _
or lcase(Cells(RowMdx, "M").Value) = lcase("Data Telecom") _
or lcase(Cells(RowMdx, "M").Value) = lcase("some other value") _
'keep it
else
rows(rowmdx).delete
end if

When the number of entries gets bigger, you may want to use a different
approach...

Dim res as variant
dim myList as variant

mylist = array("Server/Midrange Software", _
"Data Telecom", _
"some other value")

....

for RowMdx = LastRow To 1 Step -1
res = application.match(cells(rowmdx,"M").value, mylist,0)

if isnumber(res) then
'there was a match, skip it
else
Rows(RowMdx).Delete
End If
Next RowMdx

The worksheet function =match() isn't case sensitive.

Mike wrote:

I am a beginner a writing Macros in Excel. I have a Macro that deletes any
record that does not equal "Server/Midrange Software" in column M. I need to
expand this to include other criteria. Such as,

if column M does not equal "Server/Midrange Software" or does not equal
"Data Telecom" then delete the record.

The Macro I have currently is.....

Sub TryMe()
'Deletes rows where the value in column M are not equal to Server/Midrange
Software
Dim RowMdx As Long
Dim LastRow As Long

LastRow = Cells(Rows.Count, "M").End(xlUp).Row

For RowMdx = LastRow To 1 Step -1
If Cells(RowMdx, "M").Value < "Server/Midrange Software" Then
Rows(RowMdx).Delete

End If
Next RowMdx
End Sub

How do I put the OR condition in this for Data Telecom and possibly more
conditions?

Any help appreciated,,,,,,thanks

--
Mike


--

Dave Peterson
  #3   Report Post  
Posted to microsoft.public.excel.misc
external usenet poster
 
Posts: 3,101
Default Delete Macro with OR/ELSE condition

I tried this below but it deletes every record.

Sub TryMe()
'Deletes rows where the value in column M is not equal to Server/Midrange
Software
Dim RowMdx As Long
Dim LastRow As Long

LastRow = Cells(Rows.Count, "M").End(xlUp).Row

For RowMdx = LastRow To 1 Step -1
If LCase(Cells(RowMdx, "M").Value) < LCase("Server/Midrange Software") _
Or LCase(Cells(RowMdx, "M").Value) < LCase("Data Telecom") Then
Rows(RowMdx).Delete
End If

Next RowMdx
End Sub

When I use this it deletes only Server/Midrange Software

Sub TryMe()
'Deletes rows where the value in column M is not equal to Server/Midrange
Software
Dim RowMdx As Long
Dim LastRow As Long

LastRow = Cells(Rows.Count, "M").End(xlUp).Row

For RowMdx = LastRow To 1 Step -1
If Cells(RowMdx, "M").Value < "Server/Midrange Software" Then
Rows(RowMdx).Delete
End If

Next RowMdx

End Sub


So I need obviously I am doing something wrong with the first Macro..

Any Help?
--
Mike


"Dave Peterson" wrote:

If the number of options is small, you can use something like:

if lcase(Cells(RowMdx, "M").Value) = lcase("Server/Midrange Software") _
or lcase(Cells(RowMdx, "M").Value) = lcase("Data Telecom") _
or lcase(Cells(RowMdx, "M").Value) = lcase("some other value") _
'keep it
else
rows(rowmdx).delete
end if

When the number of entries gets bigger, you may want to use a different
approach...

Dim res as variant
dim myList as variant

mylist = array("Server/Midrange Software", _
"Data Telecom", _
"some other value")

....

for RowMdx = LastRow To 1 Step -1
res = application.match(cells(rowmdx,"M").value, mylist,0)

if isnumber(res) then
'there was a match, skip it
else
Rows(RowMdx).Delete
End If
Next RowMdx

The worksheet function =match() isn't case sensitive.

Mike wrote:

I am a beginner a writing Macros in Excel. I have a Macro that deletes any
record that does not equal "Server/Midrange Software" in column M. I need to
expand this to include other criteria. Such as,

if column M does not equal "Server/Midrange Software" or does not equal
"Data Telecom" then delete the record.

The Macro I have currently is.....

Sub TryMe()
'Deletes rows where the value in column M are not equal to Server/Midrange
Software
Dim RowMdx As Long
Dim LastRow As Long

LastRow = Cells(Rows.Count, "M").End(xlUp).Row

For RowMdx = LastRow To 1 Step -1
If Cells(RowMdx, "M").Value < "Server/Midrange Software" Then
Rows(RowMdx).Delete

End If
Next RowMdx
End Sub

How do I put the OR condition in this for Data Telecom and possibly more
conditions?

Any help appreciated,,,,,,thanks

--
Mike


--

Dave Peterson
.

  #4   Report Post  
Posted to microsoft.public.excel.misc
external usenet poster
 
Posts: 35,218
Default Delete Macro with OR/ELSE condition

Change the OR to AND.

Or use OR and Else like I did.



Mike wrote:

I tried this below but it deletes every record.

Sub TryMe()
'Deletes rows where the value in column M is not equal to Server/Midrange
Software
Dim RowMdx As Long
Dim LastRow As Long

LastRow = Cells(Rows.Count, "M").End(xlUp).Row

For RowMdx = LastRow To 1 Step -1
If LCase(Cells(RowMdx, "M").Value) < LCase("Server/Midrange Software") _
Or LCase(Cells(RowMdx, "M").Value) < LCase("Data Telecom") Then
Rows(RowMdx).Delete
End If

Next RowMdx
End Sub

When I use this it deletes only Server/Midrange Software

Sub TryMe()
'Deletes rows where the value in column M is not equal to Server/Midrange
Software
Dim RowMdx As Long
Dim LastRow As Long

LastRow = Cells(Rows.Count, "M").End(xlUp).Row

For RowMdx = LastRow To 1 Step -1
If Cells(RowMdx, "M").Value < "Server/Midrange Software" Then
Rows(RowMdx).Delete
End If

Next RowMdx

End Sub

So I need obviously I am doing something wrong with the first Macro..

Any Help?
--
Mike

"Dave Peterson" wrote:

If the number of options is small, you can use something like:

if lcase(Cells(RowMdx, "M").Value) = lcase("Server/Midrange Software") _
or lcase(Cells(RowMdx, "M").Value) = lcase("Data Telecom") _
or lcase(Cells(RowMdx, "M").Value) = lcase("some other value") _
'keep it
else
rows(rowmdx).delete
end if

When the number of entries gets bigger, you may want to use a different
approach...

Dim res as variant
dim myList as variant

mylist = array("Server/Midrange Software", _
"Data Telecom", _
"some other value")

....

for RowMdx = LastRow To 1 Step -1
res = application.match(cells(rowmdx,"M").value, mylist,0)

if isnumber(res) then
'there was a match, skip it
else
Rows(RowMdx).Delete
End If
Next RowMdx

The worksheet function =match() isn't case sensitive.

Mike wrote:

I am a beginner a writing Macros in Excel. I have a Macro that deletes any
record that does not equal "Server/Midrange Software" in column M. I need to
expand this to include other criteria. Such as,

if column M does not equal "Server/Midrange Software" or does not equal
"Data Telecom" then delete the record.

The Macro I have currently is.....

Sub TryMe()
'Deletes rows where the value in column M are not equal to Server/Midrange
Software
Dim RowMdx As Long
Dim LastRow As Long

LastRow = Cells(Rows.Count, "M").End(xlUp).Row

For RowMdx = LastRow To 1 Step -1
If Cells(RowMdx, "M").Value < "Server/Midrange Software" Then
Rows(RowMdx).Delete

End If
Next RowMdx
End Sub

How do I put the OR condition in this for Data Telecom and possibly more
conditions?

Any help appreciated,,,,,,thanks

--
Mike


--

Dave Peterson
.


--

Dave Peterson
  #5   Report Post  
Posted to microsoft.public.excel.misc
external usenet poster
 
Posts: 35,218
Default Delete Macro with OR/ELSE condition

Ps. Notice that I used OR and ELSE and a comparison operator of =.

I find that easier to understand.



Dave Peterson wrote:

Change the OR to AND.

Or use OR and Else like I did.

Mike wrote:

I tried this below but it deletes every record.

Sub TryMe()
'Deletes rows where the value in column M is not equal to Server/Midrange
Software
Dim RowMdx As Long
Dim LastRow As Long

LastRow = Cells(Rows.Count, "M").End(xlUp).Row

For RowMdx = LastRow To 1 Step -1
If LCase(Cells(RowMdx, "M").Value) < LCase("Server/Midrange Software") _
Or LCase(Cells(RowMdx, "M").Value) < LCase("Data Telecom") Then
Rows(RowMdx).Delete
End If

Next RowMdx
End Sub

When I use this it deletes only Server/Midrange Software

Sub TryMe()
'Deletes rows where the value in column M is not equal to Server/Midrange
Software
Dim RowMdx As Long
Dim LastRow As Long

LastRow = Cells(Rows.Count, "M").End(xlUp).Row

For RowMdx = LastRow To 1 Step -1
If Cells(RowMdx, "M").Value < "Server/Midrange Software" Then
Rows(RowMdx).Delete
End If

Next RowMdx

End Sub

So I need obviously I am doing something wrong with the first Macro..

Any Help?
--
Mike

"Dave Peterson" wrote:

If the number of options is small, you can use something like:

if lcase(Cells(RowMdx, "M").Value) = lcase("Server/Midrange Software") _
or lcase(Cells(RowMdx, "M").Value) = lcase("Data Telecom") _
or lcase(Cells(RowMdx, "M").Value) = lcase("some other value") _
'keep it
else
rows(rowmdx).delete
end if

When the number of entries gets bigger, you may want to use a different
approach...

Dim res as variant
dim myList as variant

mylist = array("Server/Midrange Software", _
"Data Telecom", _
"some other value")

....

for RowMdx = LastRow To 1 Step -1
res = application.match(cells(rowmdx,"M").value, mylist,0)

if isnumber(res) then
'there was a match, skip it
else
Rows(RowMdx).Delete
End If
Next RowMdx

The worksheet function =match() isn't case sensitive.

Mike wrote:

I am a beginner a writing Macros in Excel. I have a Macro that deletes any
record that does not equal "Server/Midrange Software" in column M. I need to
expand this to include other criteria. Such as,

if column M does not equal "Server/Midrange Software" or does not equal
"Data Telecom" then delete the record.

The Macro I have currently is.....

Sub TryMe()
'Deletes rows where the value in column M are not equal to Server/Midrange
Software
Dim RowMdx As Long
Dim LastRow As Long

LastRow = Cells(Rows.Count, "M").End(xlUp).Row

For RowMdx = LastRow To 1 Step -1
If Cells(RowMdx, "M").Value < "Server/Midrange Software" Then
Rows(RowMdx).Delete

End If
Next RowMdx
End Sub

How do I put the OR condition in this for Data Telecom and possibly more
conditions?

Any help appreciated,,,,,,thanks

--
Mike

--

Dave Peterson
.


--

Dave Peterson


--

Dave Peterson


  #6   Report Post  
Posted to microsoft.public.excel.misc
external usenet poster
 
Posts: 3,101
Default Delete Macro with OR/ELSE condition

Dave, thanks a bunch, the OR worked great...I should have know that from my
old COBOL days but didn't think of it.....

Thanks again
--
Mike


"Dave Peterson" wrote:

Change the OR to AND.

Or use OR and Else like I did.



Mike wrote:

I tried this below but it deletes every record.

Sub TryMe()
'Deletes rows where the value in column M is not equal to Server/Midrange
Software
Dim RowMdx As Long
Dim LastRow As Long

LastRow = Cells(Rows.Count, "M").End(xlUp).Row

For RowMdx = LastRow To 1 Step -1
If LCase(Cells(RowMdx, "M").Value) < LCase("Server/Midrange Software") _
Or LCase(Cells(RowMdx, "M").Value) < LCase("Data Telecom") Then
Rows(RowMdx).Delete
End If

Next RowMdx
End Sub

When I use this it deletes only Server/Midrange Software

Sub TryMe()
'Deletes rows where the value in column M is not equal to Server/Midrange
Software
Dim RowMdx As Long
Dim LastRow As Long

LastRow = Cells(Rows.Count, "M").End(xlUp).Row

For RowMdx = LastRow To 1 Step -1
If Cells(RowMdx, "M").Value < "Server/Midrange Software" Then
Rows(RowMdx).Delete
End If

Next RowMdx

End Sub

So I need obviously I am doing something wrong with the first Macro..

Any Help?
--
Mike

"Dave Peterson" wrote:

If the number of options is small, you can use something like:

if lcase(Cells(RowMdx, "M").Value) = lcase("Server/Midrange Software") _
or lcase(Cells(RowMdx, "M").Value) = lcase("Data Telecom") _
or lcase(Cells(RowMdx, "M").Value) = lcase("some other value") _
'keep it
else
rows(rowmdx).delete
end if

When the number of entries gets bigger, you may want to use a different
approach...

Dim res as variant
dim myList as variant

mylist = array("Server/Midrange Software", _
"Data Telecom", _
"some other value")

....

for RowMdx = LastRow To 1 Step -1
res = application.match(cells(rowmdx,"M").value, mylist,0)

if isnumber(res) then
'there was a match, skip it
else
Rows(RowMdx).Delete
End If
Next RowMdx

The worksheet function =match() isn't case sensitive.

Mike wrote:

I am a beginner a writing Macros in Excel. I have a Macro that deletes any
record that does not equal "Server/Midrange Software" in column M. I need to
expand this to include other criteria. Such as,

if column M does not equal "Server/Midrange Software" or does not equal
"Data Telecom" then delete the record.

The Macro I have currently is.....

Sub TryMe()
'Deletes rows where the value in column M are not equal to Server/Midrange
Software
Dim RowMdx As Long
Dim LastRow As Long

LastRow = Cells(Rows.Count, "M").End(xlUp).Row

For RowMdx = LastRow To 1 Step -1
If Cells(RowMdx, "M").Value < "Server/Midrange Software" Then
Rows(RowMdx).Delete

End If
Next RowMdx
End Sub

How do I put the OR condition in this for Data Telecom and possibly more
conditions?

Any help appreciated,,,,,,thanks

--
Mike

--

Dave Peterson
.


--

Dave Peterson
.

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Delete Row with condition puiuluipui Excel Discussion (Misc queries) 4 June 12th 09 01:49 PM
Macro to delete rows based on a condition Darrilyn Excel Worksheet Functions 1 September 6th 07 12:12 AM
How to delete lines programmatically if a condition is met? nt_artagnian[_2_] Excel Discussion (Misc queries) 1 March 7th 07 05:39 PM
Is there a way to delete a cell value based on a condition? Peanut Excel Discussion (Misc queries) 2 October 2nd 06 09:55 PM
Can I delete an entire row if condition is not met? Christine Excel Worksheet Functions 8 May 4th 06 09:47 AM


All times are GMT +1. The time now is 07:49 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"