Query:
I have data in sheet1 & similar data in sheet2, however, few of rows cell data is changed, I want to bring all extra data from both the sheet to new sheet with row number so that i can check & correct them one by one.
Solution:
I assume that a number of rows are same & each row has index number in acolumn then using below macro you can search for distinct values in both the sheet & bring them to a new sheet. Download sample file from below:
Click to Downlod
I have data in sheet1 & similar data in sheet2, however, few of rows cell data is changed, I want to bring all extra data from both the sheet to new sheet with row number so that i can check & correct them one by one.
Solution:
I assume that a number of rows are same & each row has index number in acolumn then using below macro you can search for distinct values in both the sheet & bring them to a new sheet. Download sample file from below:
Click to Downlod
Option Explicit Sub Compare_List_Diff() Dim arrM, d As Object, rngM As Range Dim arrT, d2 As Object, rngT As Range Dim r As Integer Dim wsM As Worksheet, wsT As Worksheet, wsR As Worksheet Dim iRW As Integer, iCL As Integer Dim LastCell As Range, LastCell2 As Range, LastCell3 As Range Dim wsMlr As Integer, wsMlc As Integer Dim wsTlr As Integer, wsTlc As Integer Set d = CreateObject("Scripting.Dictionary") Set d2 = CreateObject("Scripting.Dictionary") Set wsM = Worksheets("Sheet1") Set wsT = Worksheets("Sheet2") Set wsR = Worksheets("Diff") With Application .ScreenUpdating = False .DisplayAlerts = False .EnableEvents = False .AskToUpdateLinks = False End With 'get last row of Main wsM.Select Set LastCell = Cells(Cells.Find(What:="*", SearchOrder:=xlRows, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _ Cells.Find(What:="*", SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Column) wsMlr = LastCell.Row wsMlc = LastCell.Column wsT.Select Set LastCell2 = Cells(Cells.Find(What:="*", SearchOrder:=xlRows, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _ Cells.Find(What:="*", SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Column) wsTlr = LastCell2.Row wsTlc = LastCell2.Column wsR.Select Set LastCell3 = Cells(Cells.Find(What:="*", SearchOrder:=xlRows, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _ Cells.Find(What:="*", SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Column) wsR.Range("2:" & LastCell3.Row).Clear For iRW = 2 To wsTlr 'trf main sheet row data to arr and store in dict Set rngM = wsM.Range(wsM.Cells(iRW, 2), wsM.Cells(iRW, wsMlc)) arrM = Application.Transpose(rngM) 'arr = Application.Transpose(wsM.Range(wsM.Cells(iRW, 2), wsM.Cells(iRW, wsMlc))) For r = 1 To UBound(arrM, 1) If arrM(r, 1) <> "" Then d(arrM(r, 1)) = 1 End If Next r 'trf second sheet row data to range and then to array wsT.Select Set rngT = wsT.Range(wsT.Cells(iRW, 2), wsT.Cells(iRW, wsTlc)) arrT = Application.Transpose(rngT.Value) 'values from range to array For r = 1 To UBound(arrT, 1) If arrT(r, 1) <> "" Then d2(arrT(r, 1)) = 1 End If Next r 'check values in array agst dict 'Erase arrN() wsR.Cells(iRW, 1).Value = wsT.Cells(iRW, 1).Value wsR.Cells(iRW, 2).Value = "Row " & iRW For r = 1 To UBound(arrT, 1) If Not d.exists(arrT(r, 1)) Then 'arrN(r, 1) = arrV(r, 1) ''wsR.Cells(iRW, r + 1).Value = arrT(r, 1) wsR.Cells(iRW, "IV").End(xlToLeft).Offset(0, 1).Value = arrT(r, 1) End If Next r For r = 1 To UBound(arrM, 1) If Not d2.exists(arrM(r, 1)) Then 'arrN(r, 1) = arrV(r, 1) ''wsR.Cells(iRW, r + 1).Value = arrM(r, 1) wsR.Cells(iRW, "IV").End(xlToLeft).Offset(0, 1).Value = arrM(r, 1) End If Next r Next iRW wsR.Select With Application .ScreenUpdating = True .DisplayAlerts = True .EnableEvents = True .AskToUpdateLinks = True End With MsgBox "Done" End Sub
Thanks for reading give feedback and if you want to customise need, post your query on Group www.ExcelVbaLab.Com
Cheers!!
10cric login to your site
ReplyDelete20cric is an online gaming portal that serves over 1xbet a hundred games with 10cric login multiple 30cric is an Indian online casino. The online gaming platform was launched クイーンカジノ in India in 2017.