Я работаю с набором данных, который обновляется после завершения опроса общего ресурса, а затем ответы на этот опрос экспортируются в таблицу в Excel.Я хочу иметь возможность удалить всю строку (и), если почтовый индекс (строка) проверенного объекта (столбец Y) совпадает, но я хочу сохранить самый последний ответ на опрос или тот, который отображается вболее высокое значение строки.
Например, строка 38 содержит ответ на опрос со строкой почтового индекса «33138.»Строка 52 (опрос завершен совсем недавно), также был завершен для почтового индекса "33138."Я хочу удалить строку 38 и сохранить строку 52.
Ищу решение VBA.
@ BigBen Я пробовал этот код, который я нашел на нескольких форумах.Также обратите внимание, что я планирую запустить это с помощью кнопки на вкладке «Панель инструментов» для записей на вкладке «данные».
Sub deduplicate()
Dim Rng As Range, Dn As Range, n As Long
Dim Lst As Long, nRng As Range
Lst = Range("Y" & Rows.Count).End(xlUp).Row
With CreateObject("scripting.dictionary")
.CompareMode = vbTextCompare
For n = Lst To 1 Step -1
If Not .Exists(Range("Y" & n).Value) Then
.Add Range("Y" & n).Value, Nothing
Else
If nRng Is Nothing Then
Set nRng = Range("Y" & n)
Else
Set nRng = Union(nRng, Range("Y" & n))
End If
End If
Next n
If Not nRng Is Nothing Then nRng.EntireRow.Delete
End With
End Sub
@ BigBen, в рамках более длинного сценария я также попробовал следующий код.Это работало, но удаляло только первый экземпляр дубликата, а не все дубликаты строк.
Worksheets("Data").Activate
Dim lrow As Long
For lrow = Cells(Rows.Count, "Y").End(xlUp).Row To 2 Step -1
If Cells(lrow, "Y") = Cells(lrow, "Y").Offset(-1, 0) Then
Cells(lrow, "Y").Offset(-1, 0).EntireRow.Delete
End If
Next lrow