Я хочу сопоставить строки из двух разных листов и выделить только в первом столбце несопоставленной строки или, что еще лучше, скопировать несопоставленные строки в новый лист. Код должен сравнить строки двух листов и раскрасить новые строки на втором листе. Sheet2 (скажем, январь 2020 г.) содержит больше строк, чем Sheet1 (De c 2019) в качестве недавно обновленного листа, и они оба содержат строки размером более 22 КБ, причем оба имеют уникальный идентификатор в качестве первого столбца.
Мой ниже Код пытается выделить все несовпадающие ячейки и занимает больше времени, чтобы завершить sh. То, что я sh должен сделать так, чтобы код просто окрашивал непревзойденные значения только в столбце A (vb.Red) (поскольку он является уникальным идентификатором), игнорируя при этом оставшуюся часть столбца / ячеек (vb.Yellow) и, или, если возможно, скопируйте выделенные строки на новый лист.
Sub RunCompare()
Call compareSheets("Sheet1", "Sheet2") 'compareSheets("2019-01 Database", "2019-02 Database")
End Sub
Sub compareSheets(shtSheet1 As String, shtSheet2 As String)
Dim c As Integer, j As Integer, i As Integer, mydiffs As Integer, cnt1 As Integer, cnt2 As Integer
Dim noexist As Integer
cnt2 = Worksheets("Sheet2").Cells.SpecialCells(xlCellTypeLastCell).Row
cnt1 = Worksheets("Sheet1").Cells.SpecialCells(xlCellTypeLastCell).Row
'For each cell in sheet2 that is not the same in Sheet1, color it yellow
For i = 1 To cnt2
For j = 1 To cnt1
If ActiveWorkbook.Worksheets(shtSheet2).Cells(i, 1).Value = ActiveWorkbook.Worksheets(shtSheet1).Cells(j, 1).Value Then
For c = 2 To 22
If Not ActiveWorkbook.Worksheets(shtSheet2).Cells(i, c).Value = ActiveWorkbook.Worksheets(shtSheet1).Cells(j, c).Value Then
ActiveWorkbook.Worksheets(shtSheet2).Cells(i, c).Interior.Color = vbYellow
mydiffs = mydiffs + 1
End If
Next
Exit For
End If
If j = cnt1 Then
ActiveWorkbook.Worksheets(shtSheet2).Cells(i, 1).Interior.Color = vbRed
End If
Next
Next
'Display a message box to demonstrate the differences and if there is a new entry on the second sheet
'MsgBox mydiffs & ":differences found, " & noexist & ":no exist", vbInformation
ActiveWorkbook.Sheets(shtSheet2).Select
End Sub