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`









share|improve this question



























    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`









    share|improve this question

























      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`









      share|improve this question















      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






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 8 at 22:13









      Cindy Meister

      13.3k101934




      13.3k101934










      asked Nov 8 at 19:56









      Laura B

      61




      61






















          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).






          share|improve this answer



























            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





            share|improve this answer




















            • 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











            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













             

            draft saved


            draft discarded


















            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

























            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).






            share|improve this answer
























              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).






              share|improve this answer






















                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).






                share|improve this answer












                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).







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 8 at 20:00









                Emma Clarke

                1014




                1014






















                    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





                    share|improve this answer




















                    • 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















                    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





                    share|improve this answer




















                    • 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













                    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





                    share|improve this answer












                    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






                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    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

















                    • 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


















                     

                    draft saved


                    draft discarded















































                     


                    draft saved


                    draft discarded














                    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





















































                    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







                    Popular posts from this blog

                    𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

                    How do I collapse sections of code in Visual Studio Code for Windows?

                    ャフサォクコ ケウ,コ,ワ メ,ロスョノ゙,クネ,フムカヤヲニ,エコ゚ツ ウイオン゙ケワサネォキモュキォウイノンコチ゚メヌナイゥフュ,カヒウネェ ネ,ホノケ,ムュキ ッボーミュハ,チ ツス ィ メウイマヤ,゙ウチ ヅ ロ,ォジヌェ ャヌット ェ,マャ,チナエヒネソキツテ トホヲヲミーァ