Я хотел бы сравнить два точных листа, которые хранятся в двух разных книгах.
Я бы хотел, чтобы данные с 1-го листа (см. Столбец с синим идентификатором - KDws) отображались на 2-м листе (зеленый идентификатор - KDwsMain), который является основным файлом. Не хотелось бы, чтобы дубликаты отображались в основном файле.
Есть идеи, как улучшить код ниже?
введите описание изображения здесь
Мой фрагмент кода:
Sub CompareKDandDetailsView()
Dim wb As Workbook
Dim wbMain As Workbook
Set wb = ActiveWorkbook
Dim LastR As Long, LastR_main As Long
Dim i As Integer, k As Integer, j As Integer
Dim KDws As Worksheet, KDwsMain As Worksheet
Dim strFile As String
Set KDws = wb.Worksheets("KD")
LastR = KDws.Cells(Rows.Count, 1).End(xlUp).Row
'open Target file
MsgBox "Select the main file to upload your changes."
strFile = Application.GetOpenFilename()
Workbooks.Open (strFile)
Set KDwsMain = wbMain.Worksheets("KD")
LastR_main = KDwsMain.Cells(Rows.Count, 1).End(xlUp).Row
'-----------------------------
'-----------------------------
k = KDwsMain.UsedRange.Rows.Count 'last used row of the first worksheet
j = KDws.UsedRange.Rows.Count 'last used row of the second worksheet
For i = 2 To k 'Loop through the used rows of the first worksheet
'use "countIf" to quickly check if the value exists in the given range
'This way we don't have to loop through the second worksheet each time
If Application.WorksheetFunction.CountIf(KDwsMain.Range(KDwsMain.Cells(2, 1), KDwsMain.Cells(j, 1)), KDws.Cells(i, 1).Value) > 0 Then
'do nothing
Else
LastR_main = KDwsMain.Cells(Rows.Count, 1).End(xlUp).Row
KDwsMain.Cells(LastR_main + 1, 1).Value = KDws.Cells(i, 1)
KDwsMain.Cells(LastR_main + 1, 2).Value = KDws.Cells(i, 2)
End If
Next i
End Sub