Create macro that hides rows with specific word in a cell
up vote
1
down vote
favorite
I am currently trying to create a macro that hides rows when a cell contains the word "apple" or "orange". The problem that I can't seem to fix is that the cells in which "apple" and "orange" may appear have other words around them like "banana", "strawberry", "pineapple", etc. While my macro works when only "apple" or "orange" appears in a cell, it does not work when one of those words are combined with other words. Can someone help me please? I am currently using Office 365 for Mac/Excel version 16.16.2 See macro I'm using now below:
`BeginRow = 4
EndRow = 2844
ChkCol = 5
For RowCnt = BeginRow To EndRow
If Cells(RowCnt, ChkCol).Value = "Apple" Or Cells(RowCnt, ChkCol).Value = "Orange"
Then Cells(RowCnt, ChkCol).EntireRow.Hidden = True
Else
Cells(RowCnt, ChkCol).EntireRow.Hidden = False
End If
Next RowCnt`
excel vba
add a comment |
up vote
1
down vote
favorite
I am currently trying to create a macro that hides rows when a cell contains the word "apple" or "orange". The problem that I can't seem to fix is that the cells in which "apple" and "orange" may appear have other words around them like "banana", "strawberry", "pineapple", etc. While my macro works when only "apple" or "orange" appears in a cell, it does not work when one of those words are combined with other words. Can someone help me please? I am currently using Office 365 for Mac/Excel version 16.16.2 See macro I'm using now below:
`BeginRow = 4
EndRow = 2844
ChkCol = 5
For RowCnt = BeginRow To EndRow
If Cells(RowCnt, ChkCol).Value = "Apple" Or Cells(RowCnt, ChkCol).Value = "Orange"
Then Cells(RowCnt, ChkCol).EntireRow.Hidden = True
Else
Cells(RowCnt, ChkCol).EntireRow.Hidden = False
End If
Next RowCnt`
excel vba
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I am currently trying to create a macro that hides rows when a cell contains the word "apple" or "orange". The problem that I can't seem to fix is that the cells in which "apple" and "orange" may appear have other words around them like "banana", "strawberry", "pineapple", etc. While my macro works when only "apple" or "orange" appears in a cell, it does not work when one of those words are combined with other words. Can someone help me please? I am currently using Office 365 for Mac/Excel version 16.16.2 See macro I'm using now below:
`BeginRow = 4
EndRow = 2844
ChkCol = 5
For RowCnt = BeginRow To EndRow
If Cells(RowCnt, ChkCol).Value = "Apple" Or Cells(RowCnt, ChkCol).Value = "Orange"
Then Cells(RowCnt, ChkCol).EntireRow.Hidden = True
Else
Cells(RowCnt, ChkCol).EntireRow.Hidden = False
End If
Next RowCnt`
excel vba
I am currently trying to create a macro that hides rows when a cell contains the word "apple" or "orange". The problem that I can't seem to fix is that the cells in which "apple" and "orange" may appear have other words around them like "banana", "strawberry", "pineapple", etc. While my macro works when only "apple" or "orange" appears in a cell, it does not work when one of those words are combined with other words. Can someone help me please? I am currently using Office 365 for Mac/Excel version 16.16.2 See macro I'm using now below:
`BeginRow = 4
EndRow = 2844
ChkCol = 5
For RowCnt = BeginRow To EndRow
If Cells(RowCnt, ChkCol).Value = "Apple" Or Cells(RowCnt, ChkCol).Value = "Orange"
Then Cells(RowCnt, ChkCol).EntireRow.Hidden = True
Else
Cells(RowCnt, ChkCol).EntireRow.Hidden = False
End If
Next RowCnt`
excel vba
excel vba
edited Nov 8 at 22:13
Cindy Meister
13.3k101934
13.3k101934
asked Nov 8 at 19:56
Laura B
61
61
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
up vote
1
down vote
Instead of =, you should use Like:
BeginRow = 4 EndRow = 2844 ChkCol = 5
For RowCnt = BeginRow To EndRow
If UCase(Cells(RowCnt, ChkCol).Value) Like "*APPLE*" Or UCase(Cells(RowCnt, ChkCol).Value) Like "*ORANGE*" Then
Cells(RowCnt, ChkCol).EntireRow.Hidden = True
Else Cells(RowCnt, ChkCol).EntireRow.Hidden = False
End If
Next RowCnt
This will hide the rows that contain "apple" and/or "orange" (case insensitive).
add a comment |
up vote
0
down vote
I'd go this route, since it would allow for easily scaling the number of words to hide - by adding to the words array. Though I'd still use LIKE as @emma-clarke suggested.
Dim beginrow As Integer, endrow As Integer, chkcol As Integer, rowcnt As Integer, i As Integer
Dim rng As Range, r As Range
Dim words() As String
words = Split("Apple,Taco", ",")
beginrow = 1
endrow = 22
chkcol = 1
Set rng = Range(Cells(beginrow, chkcol), Cells(endrow, chkcol))
For Each r In rng
For i = 0 To UBound(words)
If UCase(r.Value) Like UCase("*" & words(i) & "*") Then
r.EntireRow.Hidden = True
Else
r.EntireRow.Hidden = False
End If
If r.EntireRow.Hidden Then Exit For
Next i
Next r
Set r = Nothing
Set rng = nothing
Thanks @emma-clarke and BamAlmighty. One question - do I have to use the * symbol when referring to Apple or Orange like Emma has in her example? Like "APPLE"
– Laura B
Nov 8 at 22:49
Hi Laura - the * symbol is called a wildcard, and is what allows you to hide cells that have more than just "apple" in it. Like "APPLE" will only hide a cell with value "apple". Like "*APPLE*" will hide a cell that has apple anywhere in it - "123applewatermelon", for example.
– Emma Clarke
Nov 9 at 19:43
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
Instead of =, you should use Like:
BeginRow = 4 EndRow = 2844 ChkCol = 5
For RowCnt = BeginRow To EndRow
If UCase(Cells(RowCnt, ChkCol).Value) Like "*APPLE*" Or UCase(Cells(RowCnt, ChkCol).Value) Like "*ORANGE*" Then
Cells(RowCnt, ChkCol).EntireRow.Hidden = True
Else Cells(RowCnt, ChkCol).EntireRow.Hidden = False
End If
Next RowCnt
This will hide the rows that contain "apple" and/or "orange" (case insensitive).
add a comment |
up vote
1
down vote
Instead of =, you should use Like:
BeginRow = 4 EndRow = 2844 ChkCol = 5
For RowCnt = BeginRow To EndRow
If UCase(Cells(RowCnt, ChkCol).Value) Like "*APPLE*" Or UCase(Cells(RowCnt, ChkCol).Value) Like "*ORANGE*" Then
Cells(RowCnt, ChkCol).EntireRow.Hidden = True
Else Cells(RowCnt, ChkCol).EntireRow.Hidden = False
End If
Next RowCnt
This will hide the rows that contain "apple" and/or "orange" (case insensitive).
add a comment |
up vote
1
down vote
up vote
1
down vote
Instead of =, you should use Like:
BeginRow = 4 EndRow = 2844 ChkCol = 5
For RowCnt = BeginRow To EndRow
If UCase(Cells(RowCnt, ChkCol).Value) Like "*APPLE*" Or UCase(Cells(RowCnt, ChkCol).Value) Like "*ORANGE*" Then
Cells(RowCnt, ChkCol).EntireRow.Hidden = True
Else Cells(RowCnt, ChkCol).EntireRow.Hidden = False
End If
Next RowCnt
This will hide the rows that contain "apple" and/or "orange" (case insensitive).
Instead of =, you should use Like:
BeginRow = 4 EndRow = 2844 ChkCol = 5
For RowCnt = BeginRow To EndRow
If UCase(Cells(RowCnt, ChkCol).Value) Like "*APPLE*" Or UCase(Cells(RowCnt, ChkCol).Value) Like "*ORANGE*" Then
Cells(RowCnt, ChkCol).EntireRow.Hidden = True
Else Cells(RowCnt, ChkCol).EntireRow.Hidden = False
End If
Next RowCnt
This will hide the rows that contain "apple" and/or "orange" (case insensitive).
answered Nov 8 at 20:00
Emma Clarke
1014
1014
add a comment |
add a comment |
up vote
0
down vote
I'd go this route, since it would allow for easily scaling the number of words to hide - by adding to the words array. Though I'd still use LIKE as @emma-clarke suggested.
Dim beginrow As Integer, endrow As Integer, chkcol As Integer, rowcnt As Integer, i As Integer
Dim rng As Range, r As Range
Dim words() As String
words = Split("Apple,Taco", ",")
beginrow = 1
endrow = 22
chkcol = 1
Set rng = Range(Cells(beginrow, chkcol), Cells(endrow, chkcol))
For Each r In rng
For i = 0 To UBound(words)
If UCase(r.Value) Like UCase("*" & words(i) & "*") Then
r.EntireRow.Hidden = True
Else
r.EntireRow.Hidden = False
End If
If r.EntireRow.Hidden Then Exit For
Next i
Next r
Set r = Nothing
Set rng = nothing
Thanks @emma-clarke and BamAlmighty. One question - do I have to use the * symbol when referring to Apple or Orange like Emma has in her example? Like "APPLE"
– Laura B
Nov 8 at 22:49
Hi Laura - the * symbol is called a wildcard, and is what allows you to hide cells that have more than just "apple" in it. Like "APPLE" will only hide a cell with value "apple". Like "*APPLE*" will hide a cell that has apple anywhere in it - "123applewatermelon", for example.
– Emma Clarke
Nov 9 at 19:43
add a comment |
up vote
0
down vote
I'd go this route, since it would allow for easily scaling the number of words to hide - by adding to the words array. Though I'd still use LIKE as @emma-clarke suggested.
Dim beginrow As Integer, endrow As Integer, chkcol As Integer, rowcnt As Integer, i As Integer
Dim rng As Range, r As Range
Dim words() As String
words = Split("Apple,Taco", ",")
beginrow = 1
endrow = 22
chkcol = 1
Set rng = Range(Cells(beginrow, chkcol), Cells(endrow, chkcol))
For Each r In rng
For i = 0 To UBound(words)
If UCase(r.Value) Like UCase("*" & words(i) & "*") Then
r.EntireRow.Hidden = True
Else
r.EntireRow.Hidden = False
End If
If r.EntireRow.Hidden Then Exit For
Next i
Next r
Set r = Nothing
Set rng = nothing
Thanks @emma-clarke and BamAlmighty. One question - do I have to use the * symbol when referring to Apple or Orange like Emma has in her example? Like "APPLE"
– Laura B
Nov 8 at 22:49
Hi Laura - the * symbol is called a wildcard, and is what allows you to hide cells that have more than just "apple" in it. Like "APPLE" will only hide a cell with value "apple". Like "*APPLE*" will hide a cell that has apple anywhere in it - "123applewatermelon", for example.
– Emma Clarke
Nov 9 at 19:43
add a comment |
up vote
0
down vote
up vote
0
down vote
I'd go this route, since it would allow for easily scaling the number of words to hide - by adding to the words array. Though I'd still use LIKE as @emma-clarke suggested.
Dim beginrow As Integer, endrow As Integer, chkcol As Integer, rowcnt As Integer, i As Integer
Dim rng As Range, r As Range
Dim words() As String
words = Split("Apple,Taco", ",")
beginrow = 1
endrow = 22
chkcol = 1
Set rng = Range(Cells(beginrow, chkcol), Cells(endrow, chkcol))
For Each r In rng
For i = 0 To UBound(words)
If UCase(r.Value) Like UCase("*" & words(i) & "*") Then
r.EntireRow.Hidden = True
Else
r.EntireRow.Hidden = False
End If
If r.EntireRow.Hidden Then Exit For
Next i
Next r
Set r = Nothing
Set rng = nothing
I'd go this route, since it would allow for easily scaling the number of words to hide - by adding to the words array. Though I'd still use LIKE as @emma-clarke suggested.
Dim beginrow As Integer, endrow As Integer, chkcol As Integer, rowcnt As Integer, i As Integer
Dim rng As Range, r As Range
Dim words() As String
words = Split("Apple,Taco", ",")
beginrow = 1
endrow = 22
chkcol = 1
Set rng = Range(Cells(beginrow, chkcol), Cells(endrow, chkcol))
For Each r In rng
For i = 0 To UBound(words)
If UCase(r.Value) Like UCase("*" & words(i) & "*") Then
r.EntireRow.Hidden = True
Else
r.EntireRow.Hidden = False
End If
If r.EntireRow.Hidden Then Exit For
Next i
Next r
Set r = Nothing
Set rng = nothing
answered Nov 8 at 21:04
BamAlmighty
436
436
Thanks @emma-clarke and BamAlmighty. One question - do I have to use the * symbol when referring to Apple or Orange like Emma has in her example? Like "APPLE"
– Laura B
Nov 8 at 22:49
Hi Laura - the * symbol is called a wildcard, and is what allows you to hide cells that have more than just "apple" in it. Like "APPLE" will only hide a cell with value "apple". Like "*APPLE*" will hide a cell that has apple anywhere in it - "123applewatermelon", for example.
– Emma Clarke
Nov 9 at 19:43
add a comment |
Thanks @emma-clarke and BamAlmighty. One question - do I have to use the * symbol when referring to Apple or Orange like Emma has in her example? Like "APPLE"
– Laura B
Nov 8 at 22:49
Hi Laura - the * symbol is called a wildcard, and is what allows you to hide cells that have more than just "apple" in it. Like "APPLE" will only hide a cell with value "apple". Like "*APPLE*" will hide a cell that has apple anywhere in it - "123applewatermelon", for example.
– Emma Clarke
Nov 9 at 19:43
Thanks @emma-clarke and BamAlmighty. One question - do I have to use the * symbol when referring to Apple or Orange like Emma has in her example? Like "APPLE"
– Laura B
Nov 8 at 22:49
Thanks @emma-clarke and BamAlmighty. One question - do I have to use the * symbol when referring to Apple or Orange like Emma has in her example? Like "APPLE"
– Laura B
Nov 8 at 22:49
Hi Laura - the * symbol is called a wildcard, and is what allows you to hide cells that have more than just "apple" in it. Like "APPLE" will only hide a cell with value "apple". Like "*APPLE*" will hide a cell that has apple anywhere in it - "123applewatermelon", for example.
– Emma Clarke
Nov 9 at 19:43
Hi Laura - the * symbol is called a wildcard, and is what allows you to hide cells that have more than just "apple" in it. Like "APPLE" will only hide a cell with value "apple". Like "*APPLE*" will hide a cell that has apple anywhere in it - "123applewatermelon", for example.
– Emma Clarke
Nov 9 at 19:43
add a comment |
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53215225%2fcreate-macro-that-hides-rows-with-specific-word-in-a-cell%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown