Conditionally append non-matching rows to bottom of table and dealing with blanks using VBA in excel





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







2















I'm attempting to create a VBA module in excel that compares two columns of property numbers (master: column A, sheet1, destination: column A, sheet2) and returns all non-matching values from the master (i.e. present in master, but not in destination) to the bottom of the destination table (i.e. first blank row at the end of the destination table). So far I have something that works pretty well, but I discovered a few hiccups when testing.



Code:



Sub MergeData()
Dim wsSource As Worksheet
Dim wsDest As Worksheet
Dim recRow As Long
Dim lastRow As Long
Dim fCell As Range
Dim i As Long

'Define our worksheets
Set wsSource = Worksheets("Sheet1")
Set wsDest = Worksheets("Sheet2")

Application.ScreenUpdating = False

recRow = 1

With wsSource
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

For i = 2 To lastRow
'See if item is in Master sheet
Set fCell = wsDest.Range("A:A").Find(what:=.Cells(i, "A").Value, lookat:=xlWhole, MatchCase:=False)

If Not fCell Is Nothing Then
'Record is already in master sheet
recRow = fCell.Row
Else
'Need to move this to master sheet after last found record
.Cells(i, "A").Cells.Copy
wsDest.Cells(lastRow, "A").Cells.Insert
recRow = recRow
End If
Next i


One issue I noticed was when there are blanks in the destination table things get a little wonky (example):



Before running module:



  M|D

1|1

2|

3|3


After:



M|D

1|1

2|

3|2

|3


Notice that the blank cell remains and the order of the returned results is changed. My desired result is:



M|D

1|1

2|

3|3

|2


The desired result preserves the order, as well as the blank (which shouldn't exist in the master data, but I'm preparing for worst case scenarios as I am not the DBA for the master table). Not getting the desired result in this instance is problematic because the destination sheet needs to be "static" (i.e. preserve row order). There will be columns next to column A in the destination sheet where multiple users will be entering comments and if the destination table shifts (beyond adding rows at the end) or re-orders comments will become detached from their original associated property number. Chaos ensues and so on.



I'm very green with VBA so I can't seem to figure out the errors of my ways (there may be more errors, but I have yet to discover anything else when testing so pointing them out would be greatly appreciated). Also, if this information is pertinent, the master list is a SQL connected table that will be periodically refreshed (so the process would be refresh master (dynamic, i.e. order of rows can and does change), run module to return new property numbers to bottom of destination sheet, users add comments and filter destination sheet in excel (static, i.e. order of rows do not change except when all columns are simultaneously filtered or sorted). Thank you all in advance. This community has helped me break through so many roadblocks, hopefully this will be another success story.










share|improve this question





























    2















    I'm attempting to create a VBA module in excel that compares two columns of property numbers (master: column A, sheet1, destination: column A, sheet2) and returns all non-matching values from the master (i.e. present in master, but not in destination) to the bottom of the destination table (i.e. first blank row at the end of the destination table). So far I have something that works pretty well, but I discovered a few hiccups when testing.



    Code:



    Sub MergeData()
    Dim wsSource As Worksheet
    Dim wsDest As Worksheet
    Dim recRow As Long
    Dim lastRow As Long
    Dim fCell As Range
    Dim i As Long

    'Define our worksheets
    Set wsSource = Worksheets("Sheet1")
    Set wsDest = Worksheets("Sheet2")

    Application.ScreenUpdating = False

    recRow = 1

    With wsSource
    lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

    For i = 2 To lastRow
    'See if item is in Master sheet
    Set fCell = wsDest.Range("A:A").Find(what:=.Cells(i, "A").Value, lookat:=xlWhole, MatchCase:=False)

    If Not fCell Is Nothing Then
    'Record is already in master sheet
    recRow = fCell.Row
    Else
    'Need to move this to master sheet after last found record
    .Cells(i, "A").Cells.Copy
    wsDest.Cells(lastRow, "A").Cells.Insert
    recRow = recRow
    End If
    Next i


    One issue I noticed was when there are blanks in the destination table things get a little wonky (example):



    Before running module:



      M|D

    1|1

    2|

    3|3


    After:



    M|D

    1|1

    2|

    3|2

    |3


    Notice that the blank cell remains and the order of the returned results is changed. My desired result is:



    M|D

    1|1

    2|

    3|3

    |2


    The desired result preserves the order, as well as the blank (which shouldn't exist in the master data, but I'm preparing for worst case scenarios as I am not the DBA for the master table). Not getting the desired result in this instance is problematic because the destination sheet needs to be "static" (i.e. preserve row order). There will be columns next to column A in the destination sheet where multiple users will be entering comments and if the destination table shifts (beyond adding rows at the end) or re-orders comments will become detached from their original associated property number. Chaos ensues and so on.



    I'm very green with VBA so I can't seem to figure out the errors of my ways (there may be more errors, but I have yet to discover anything else when testing so pointing them out would be greatly appreciated). Also, if this information is pertinent, the master list is a SQL connected table that will be periodically refreshed (so the process would be refresh master (dynamic, i.e. order of rows can and does change), run module to return new property numbers to bottom of destination sheet, users add comments and filter destination sheet in excel (static, i.e. order of rows do not change except when all columns are simultaneously filtered or sorted). Thank you all in advance. This community has helped me break through so many roadblocks, hopefully this will be another success story.










    share|improve this question

























      2












      2








      2








      I'm attempting to create a VBA module in excel that compares two columns of property numbers (master: column A, sheet1, destination: column A, sheet2) and returns all non-matching values from the master (i.e. present in master, but not in destination) to the bottom of the destination table (i.e. first blank row at the end of the destination table). So far I have something that works pretty well, but I discovered a few hiccups when testing.



      Code:



      Sub MergeData()
      Dim wsSource As Worksheet
      Dim wsDest As Worksheet
      Dim recRow As Long
      Dim lastRow As Long
      Dim fCell As Range
      Dim i As Long

      'Define our worksheets
      Set wsSource = Worksheets("Sheet1")
      Set wsDest = Worksheets("Sheet2")

      Application.ScreenUpdating = False

      recRow = 1

      With wsSource
      lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

      For i = 2 To lastRow
      'See if item is in Master sheet
      Set fCell = wsDest.Range("A:A").Find(what:=.Cells(i, "A").Value, lookat:=xlWhole, MatchCase:=False)

      If Not fCell Is Nothing Then
      'Record is already in master sheet
      recRow = fCell.Row
      Else
      'Need to move this to master sheet after last found record
      .Cells(i, "A").Cells.Copy
      wsDest.Cells(lastRow, "A").Cells.Insert
      recRow = recRow
      End If
      Next i


      One issue I noticed was when there are blanks in the destination table things get a little wonky (example):



      Before running module:



        M|D

      1|1

      2|

      3|3


      After:



      M|D

      1|1

      2|

      3|2

      |3


      Notice that the blank cell remains and the order of the returned results is changed. My desired result is:



      M|D

      1|1

      2|

      3|3

      |2


      The desired result preserves the order, as well as the blank (which shouldn't exist in the master data, but I'm preparing for worst case scenarios as I am not the DBA for the master table). Not getting the desired result in this instance is problematic because the destination sheet needs to be "static" (i.e. preserve row order). There will be columns next to column A in the destination sheet where multiple users will be entering comments and if the destination table shifts (beyond adding rows at the end) or re-orders comments will become detached from their original associated property number. Chaos ensues and so on.



      I'm very green with VBA so I can't seem to figure out the errors of my ways (there may be more errors, but I have yet to discover anything else when testing so pointing them out would be greatly appreciated). Also, if this information is pertinent, the master list is a SQL connected table that will be periodically refreshed (so the process would be refresh master (dynamic, i.e. order of rows can and does change), run module to return new property numbers to bottom of destination sheet, users add comments and filter destination sheet in excel (static, i.e. order of rows do not change except when all columns are simultaneously filtered or sorted). Thank you all in advance. This community has helped me break through so many roadblocks, hopefully this will be another success story.










      share|improve this question














      I'm attempting to create a VBA module in excel that compares two columns of property numbers (master: column A, sheet1, destination: column A, sheet2) and returns all non-matching values from the master (i.e. present in master, but not in destination) to the bottom of the destination table (i.e. first blank row at the end of the destination table). So far I have something that works pretty well, but I discovered a few hiccups when testing.



      Code:



      Sub MergeData()
      Dim wsSource As Worksheet
      Dim wsDest As Worksheet
      Dim recRow As Long
      Dim lastRow As Long
      Dim fCell As Range
      Dim i As Long

      'Define our worksheets
      Set wsSource = Worksheets("Sheet1")
      Set wsDest = Worksheets("Sheet2")

      Application.ScreenUpdating = False

      recRow = 1

      With wsSource
      lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

      For i = 2 To lastRow
      'See if item is in Master sheet
      Set fCell = wsDest.Range("A:A").Find(what:=.Cells(i, "A").Value, lookat:=xlWhole, MatchCase:=False)

      If Not fCell Is Nothing Then
      'Record is already in master sheet
      recRow = fCell.Row
      Else
      'Need to move this to master sheet after last found record
      .Cells(i, "A").Cells.Copy
      wsDest.Cells(lastRow, "A").Cells.Insert
      recRow = recRow
      End If
      Next i


      One issue I noticed was when there are blanks in the destination table things get a little wonky (example):



      Before running module:



        M|D

      1|1

      2|

      3|3


      After:



      M|D

      1|1

      2|

      3|2

      |3


      Notice that the blank cell remains and the order of the returned results is changed. My desired result is:



      M|D

      1|1

      2|

      3|3

      |2


      The desired result preserves the order, as well as the blank (which shouldn't exist in the master data, but I'm preparing for worst case scenarios as I am not the DBA for the master table). Not getting the desired result in this instance is problematic because the destination sheet needs to be "static" (i.e. preserve row order). There will be columns next to column A in the destination sheet where multiple users will be entering comments and if the destination table shifts (beyond adding rows at the end) or re-orders comments will become detached from their original associated property number. Chaos ensues and so on.



      I'm very green with VBA so I can't seem to figure out the errors of my ways (there may be more errors, but I have yet to discover anything else when testing so pointing them out would be greatly appreciated). Also, if this information is pertinent, the master list is a SQL connected table that will be periodically refreshed (so the process would be refresh master (dynamic, i.e. order of rows can and does change), run module to return new property numbers to bottom of destination sheet, users add comments and filter destination sheet in excel (static, i.e. order of rows do not change except when all columns are simultaneously filtered or sorted). Thank you all in advance. This community has helped me break through so many roadblocks, hopefully this will be another success story.







      excel vba excel-vba






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jan 3 at 16:29









      MEFMEF

      297




      297
























          1 Answer
          1






          active

          oldest

          votes


















          3














          try using something more akin to:



          dim i as long, dim lrs as long, lrd as long
          with sheets(1)
          lrs = .cells(.rows.count,1).end(xlup).row
          for i = 2 to lrs 'assumes header in row 1
          if application.iferror(application.match(.cells(i,1),sheets(2).columns(1),0),0)=0 then
          lrd = sheets(2).cells(sheets(2).rows.count,1).end(xlup).row
          sheets(2).cells(lrd+1,1).value = .cells(i,1).value
          end if
          next i
          end with


          this will allow you to check if the value exists (using match) and if it doesn't match, it will get added to that list, at the bottom, then move to the next line from the source data.






          share|improve this answer


























          • You could also use application.isna() instead of the iferror to take advatnage of true/false

            – Cyril
            Jan 3 at 16:42











          • Cyril, I'm getting a "Property let procedure not defined and property get procedure did not return and object" error on this line : lrs = .Cells(.Rows.Count, 1).Row(xlUp).Row" Any thoughts? Again apologies if I'm missing something obvious.

            – MEF
            Jan 3 at 16:49













          • Check the edit i made. sorry, i had put in row(xlup) instead of end(xlup) as i wrote this off the collar, rather than in an IDE

            – Cyril
            Jan 3 at 16:56











          • Cyril, you beautiful genius. It works like a charm. Only thing I needed to change was adding "Dim" in front of that last variable (lrd). Thanks for all your help.

            – MEF
            Jan 3 at 17:22











          • Cyril, thought I'd follow up with you quickly before posting a separate question because you were incredibly helpful with this response. I'm trying to slot in a line to that last if statement that makes the font color of the "new values" being added to the row in sheet 2 red and I'm having trouble. The idea being that the "new" values would stand out and an autofilter line I have would surface them to the top. I was just going to use conditional formatting, but I think a VBA solution would be cleaner. Thanks again for your help on my first problem.

            – MEF
            Jan 23 at 14:45












          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',
          autoActivateHeartbeat: false,
          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%2f54026222%2fconditionally-append-non-matching-rows-to-bottom-of-table-and-dealing-with-blank%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          3














          try using something more akin to:



          dim i as long, dim lrs as long, lrd as long
          with sheets(1)
          lrs = .cells(.rows.count,1).end(xlup).row
          for i = 2 to lrs 'assumes header in row 1
          if application.iferror(application.match(.cells(i,1),sheets(2).columns(1),0),0)=0 then
          lrd = sheets(2).cells(sheets(2).rows.count,1).end(xlup).row
          sheets(2).cells(lrd+1,1).value = .cells(i,1).value
          end if
          next i
          end with


          this will allow you to check if the value exists (using match) and if it doesn't match, it will get added to that list, at the bottom, then move to the next line from the source data.






          share|improve this answer


























          • You could also use application.isna() instead of the iferror to take advatnage of true/false

            – Cyril
            Jan 3 at 16:42











          • Cyril, I'm getting a "Property let procedure not defined and property get procedure did not return and object" error on this line : lrs = .Cells(.Rows.Count, 1).Row(xlUp).Row" Any thoughts? Again apologies if I'm missing something obvious.

            – MEF
            Jan 3 at 16:49













          • Check the edit i made. sorry, i had put in row(xlup) instead of end(xlup) as i wrote this off the collar, rather than in an IDE

            – Cyril
            Jan 3 at 16:56











          • Cyril, you beautiful genius. It works like a charm. Only thing I needed to change was adding "Dim" in front of that last variable (lrd). Thanks for all your help.

            – MEF
            Jan 3 at 17:22











          • Cyril, thought I'd follow up with you quickly before posting a separate question because you were incredibly helpful with this response. I'm trying to slot in a line to that last if statement that makes the font color of the "new values" being added to the row in sheet 2 red and I'm having trouble. The idea being that the "new" values would stand out and an autofilter line I have would surface them to the top. I was just going to use conditional formatting, but I think a VBA solution would be cleaner. Thanks again for your help on my first problem.

            – MEF
            Jan 23 at 14:45
















          3














          try using something more akin to:



          dim i as long, dim lrs as long, lrd as long
          with sheets(1)
          lrs = .cells(.rows.count,1).end(xlup).row
          for i = 2 to lrs 'assumes header in row 1
          if application.iferror(application.match(.cells(i,1),sheets(2).columns(1),0),0)=0 then
          lrd = sheets(2).cells(sheets(2).rows.count,1).end(xlup).row
          sheets(2).cells(lrd+1,1).value = .cells(i,1).value
          end if
          next i
          end with


          this will allow you to check if the value exists (using match) and if it doesn't match, it will get added to that list, at the bottom, then move to the next line from the source data.






          share|improve this answer


























          • You could also use application.isna() instead of the iferror to take advatnage of true/false

            – Cyril
            Jan 3 at 16:42











          • Cyril, I'm getting a "Property let procedure not defined and property get procedure did not return and object" error on this line : lrs = .Cells(.Rows.Count, 1).Row(xlUp).Row" Any thoughts? Again apologies if I'm missing something obvious.

            – MEF
            Jan 3 at 16:49













          • Check the edit i made. sorry, i had put in row(xlup) instead of end(xlup) as i wrote this off the collar, rather than in an IDE

            – Cyril
            Jan 3 at 16:56











          • Cyril, you beautiful genius. It works like a charm. Only thing I needed to change was adding "Dim" in front of that last variable (lrd). Thanks for all your help.

            – MEF
            Jan 3 at 17:22











          • Cyril, thought I'd follow up with you quickly before posting a separate question because you were incredibly helpful with this response. I'm trying to slot in a line to that last if statement that makes the font color of the "new values" being added to the row in sheet 2 red and I'm having trouble. The idea being that the "new" values would stand out and an autofilter line I have would surface them to the top. I was just going to use conditional formatting, but I think a VBA solution would be cleaner. Thanks again for your help on my first problem.

            – MEF
            Jan 23 at 14:45














          3












          3








          3







          try using something more akin to:



          dim i as long, dim lrs as long, lrd as long
          with sheets(1)
          lrs = .cells(.rows.count,1).end(xlup).row
          for i = 2 to lrs 'assumes header in row 1
          if application.iferror(application.match(.cells(i,1),sheets(2).columns(1),0),0)=0 then
          lrd = sheets(2).cells(sheets(2).rows.count,1).end(xlup).row
          sheets(2).cells(lrd+1,1).value = .cells(i,1).value
          end if
          next i
          end with


          this will allow you to check if the value exists (using match) and if it doesn't match, it will get added to that list, at the bottom, then move to the next line from the source data.






          share|improve this answer















          try using something more akin to:



          dim i as long, dim lrs as long, lrd as long
          with sheets(1)
          lrs = .cells(.rows.count,1).end(xlup).row
          for i = 2 to lrs 'assumes header in row 1
          if application.iferror(application.match(.cells(i,1),sheets(2).columns(1),0),0)=0 then
          lrd = sheets(2).cells(sheets(2).rows.count,1).end(xlup).row
          sheets(2).cells(lrd+1,1).value = .cells(i,1).value
          end if
          next i
          end with


          this will allow you to check if the value exists (using match) and if it doesn't match, it will get added to that list, at the bottom, then move to the next line from the source data.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Jan 3 at 16:40

























          answered Jan 3 at 16:35









          CyrilCyril

          3,2001924




          3,2001924













          • You could also use application.isna() instead of the iferror to take advatnage of true/false

            – Cyril
            Jan 3 at 16:42











          • Cyril, I'm getting a "Property let procedure not defined and property get procedure did not return and object" error on this line : lrs = .Cells(.Rows.Count, 1).Row(xlUp).Row" Any thoughts? Again apologies if I'm missing something obvious.

            – MEF
            Jan 3 at 16:49













          • Check the edit i made. sorry, i had put in row(xlup) instead of end(xlup) as i wrote this off the collar, rather than in an IDE

            – Cyril
            Jan 3 at 16:56











          • Cyril, you beautiful genius. It works like a charm. Only thing I needed to change was adding "Dim" in front of that last variable (lrd). Thanks for all your help.

            – MEF
            Jan 3 at 17:22











          • Cyril, thought I'd follow up with you quickly before posting a separate question because you were incredibly helpful with this response. I'm trying to slot in a line to that last if statement that makes the font color of the "new values" being added to the row in sheet 2 red and I'm having trouble. The idea being that the "new" values would stand out and an autofilter line I have would surface them to the top. I was just going to use conditional formatting, but I think a VBA solution would be cleaner. Thanks again for your help on my first problem.

            – MEF
            Jan 23 at 14:45



















          • You could also use application.isna() instead of the iferror to take advatnage of true/false

            – Cyril
            Jan 3 at 16:42











          • Cyril, I'm getting a "Property let procedure not defined and property get procedure did not return and object" error on this line : lrs = .Cells(.Rows.Count, 1).Row(xlUp).Row" Any thoughts? Again apologies if I'm missing something obvious.

            – MEF
            Jan 3 at 16:49













          • Check the edit i made. sorry, i had put in row(xlup) instead of end(xlup) as i wrote this off the collar, rather than in an IDE

            – Cyril
            Jan 3 at 16:56











          • Cyril, you beautiful genius. It works like a charm. Only thing I needed to change was adding "Dim" in front of that last variable (lrd). Thanks for all your help.

            – MEF
            Jan 3 at 17:22











          • Cyril, thought I'd follow up with you quickly before posting a separate question because you were incredibly helpful with this response. I'm trying to slot in a line to that last if statement that makes the font color of the "new values" being added to the row in sheet 2 red and I'm having trouble. The idea being that the "new" values would stand out and an autofilter line I have would surface them to the top. I was just going to use conditional formatting, but I think a VBA solution would be cleaner. Thanks again for your help on my first problem.

            – MEF
            Jan 23 at 14:45

















          You could also use application.isna() instead of the iferror to take advatnage of true/false

          – Cyril
          Jan 3 at 16:42





          You could also use application.isna() instead of the iferror to take advatnage of true/false

          – Cyril
          Jan 3 at 16:42













          Cyril, I'm getting a "Property let procedure not defined and property get procedure did not return and object" error on this line : lrs = .Cells(.Rows.Count, 1).Row(xlUp).Row" Any thoughts? Again apologies if I'm missing something obvious.

          – MEF
          Jan 3 at 16:49







          Cyril, I'm getting a "Property let procedure not defined and property get procedure did not return and object" error on this line : lrs = .Cells(.Rows.Count, 1).Row(xlUp).Row" Any thoughts? Again apologies if I'm missing something obvious.

          – MEF
          Jan 3 at 16:49















          Check the edit i made. sorry, i had put in row(xlup) instead of end(xlup) as i wrote this off the collar, rather than in an IDE

          – Cyril
          Jan 3 at 16:56





          Check the edit i made. sorry, i had put in row(xlup) instead of end(xlup) as i wrote this off the collar, rather than in an IDE

          – Cyril
          Jan 3 at 16:56













          Cyril, you beautiful genius. It works like a charm. Only thing I needed to change was adding "Dim" in front of that last variable (lrd). Thanks for all your help.

          – MEF
          Jan 3 at 17:22





          Cyril, you beautiful genius. It works like a charm. Only thing I needed to change was adding "Dim" in front of that last variable (lrd). Thanks for all your help.

          – MEF
          Jan 3 at 17:22













          Cyril, thought I'd follow up with you quickly before posting a separate question because you were incredibly helpful with this response. I'm trying to slot in a line to that last if statement that makes the font color of the "new values" being added to the row in sheet 2 red and I'm having trouble. The idea being that the "new" values would stand out and an autofilter line I have would surface them to the top. I was just going to use conditional formatting, but I think a VBA solution would be cleaner. Thanks again for your help on my first problem.

          – MEF
          Jan 23 at 14:45





          Cyril, thought I'd follow up with you quickly before posting a separate question because you were incredibly helpful with this response. I'm trying to slot in a line to that last if statement that makes the font color of the "new values" being added to the row in sheet 2 red and I'm having trouble. The idea being that the "new" values would stand out and an autofilter line I have would surface them to the top. I was just going to use conditional formatting, but I think a VBA solution would be cleaner. Thanks again for your help on my first problem.

          – MEF
          Jan 23 at 14:45




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54026222%2fconditionally-append-non-matching-rows-to-bottom-of-table-and-dealing-with-blank%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

          MongoDB - Not Authorized To Execute Command

          How to fix TextFormField cause rebuild widget in Flutter

          in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith