В этом проекте я надеюсь удалить дубликаты на основе идентификационного номера, сохранив последние записи.Кроме того, я хочу сохранить каждую ячейку в столбце D и далее из предыдущих записей.В конечном итоге это означает, что самые последние записи будут заменены в строке предыдущих записей.Пожалуйста, смотрите таблицы ниже для большей ясности:
![Example of results before and after macro](https://i.stack.imgur.com/2Jqno.jpg)
На основании приведенного выше примера, я ищу результат:
- Удалить дубликаты на основе идентификатора из столбцов от A до C и сохранить самые последние записи
- Сохранить столбцы с D по H из предыдущих записей
- Заменить предыдущие записи самыми последними встрока предыдущих записей.
Другими словами: Обновите столбцы от A до C без изменения столбцов D до H
Итак, исходный код, который у меня был, был следующим.Он сохранил только предыдущие записи и сохранил столбцы от D до H:
Sub Delete_Duplicates()
Sheet5.Range("$A$1:$H$29999").RemoveDuplicates Columns:=Array(1) _
, Header:=xlYes
End Sub
В таблице ниже показано, что я получил бы: ![Result after first code](https://i.stack.imgur.com/6cby0.jpg)
Следующий код IЯ должен был сохранить самые новые записи, но это удаляет мои записи в столбце D до H:
Sub Delete_Duplicates_2()
Dim Rng As Range, Dn As Range, n As Long
Dim Lst As Long, nRng As Range
Set Rng = Sheet5.Range("$A$2:$H$29999")
Lst = Range("A" & Rows.Count).End(xlUp).Row
With CreateObject("scripting.dictionary")
.CompareMode = vbTextCompare
For n = Lst To 1 Step -1
If Not .Exists(Range("A" & n).Value) Then
.Add Range("A" & n).Value, Nothing
Else
If nRng Is Nothing Then
Set nRng = Range("A" & n)
Else
Set nRng = Union(nRng, Range("A" & n))
End If
End If
Next n
If Not nRng Is Nothing Then
nRng.EntireRow.Delete
End With
End Sub
В таблице ниже показано, что я получил бы: ![enter image description here](https://i.stack.imgur.com/NRfQo.jpg)
Я открыт для любых предложений и благодарю вас за помощь!