Добрый вечер! Нужна помощь) Необходимо оставить все как есть, только удалив дубли в номерах. То есть все строки должны остаться на своем месте. В ручную нет возможности удалить, так как в основном файле множество таких значений. Есть ли может быть какой-то макрос на эту тему? Или какие другие варианты. Спасибо заранее за помощь) Прикрепил пример.
Sub DelDublTelefon()
Dim i As Long
Dim iLastRow As Long
Dim j As Integer
Dim dict As Object
iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
Set dict = CreateObject("Scripting.Dictionary")
For i = 2 To iLastRow
For j = 2 To 5
If Cells(i, j) <> "" Then
If Not dict.exists(CStr(Cells(i, j))) Then 'если нет номера, то добавляем его в словарь
dict.Add CStr(Cells(i, j)), 1
Else
Cells(i, j) = ""
End If
End If
Next
Next
Columns("H").ClearContents
Cells(1, "H").Resize(dict.Count) = Application.Transpose(dict.Keys)
End Sub
Андрей VG написал: сообщить по шагам, что вы делали, когда не получилось?
Вот получается я попытался сделать как у вас, но по шагам делал как в этом уроке https://www.planetaexcel.ru/techniques/3/7991/ В итоге, не получается. Я хотел бы у Вас узнать, как у Вас так получилось. Если есть возможность подсказать мне, я буду очень признателен.
burov_oleg написал: но по шагам делал как в этом уроке
в том уроке, применительно к Power Query, рассматривается удаление дубликатов слов внутри ячейки. Какое это имеет отношение к вашей задаче, кроме слова дубликаты? Самое простое использование - вставляете данные в левую таблицу, не нарушая структуру, обновляете правую, получая в ней требуемый результат. Ну, или допиливаете код Kuzmich, там нужно внести не так много изменений, чтобы получить на выходе тоже самое.
burov_oleg написал: Может есть какая ссылка на подробный урок?
Увы, это целая серия уроков потребуется. Лучше воспользуйтесь кодом Юрий М. Ну, или модифицированным кодом Kuzmich. Активная ячейка должна быть одной из ячеек таблицы, лучше ячейкой нумерации.
Код
Public Sub ClearDublicates()
Dim pDict As Object, vData As Variant
Dim i As Long, j As Long, vKey As Variant
vData = ActiveCell.CurrentRegion.Value
Set pDict = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(vData, 1)
For j = 2 To UBound(vData, 2)
vKey = vData(i, j)
If pDict.exists(vKey) Then
vData(i, j) = Empty
Else
pDict(vKey) = Empty
End If
Next
Next
ActiveCell.CurrentRegion = vData
End Sub