Страницы: 1
RSS
Удаление дублей, пропуская пустые значения, Инструментом "удаление дубликатов" не получается, не понятно почему
 
Добрый вечер! Нужна помощь)
Необходимо оставить все как есть, только удалив дубли в номерах. То есть все строки должны остаться на своем месте.
В ручную нет возможности удалить, так как в основном файле множество таких значений.
Есть ли может быть какой-то макрос на эту тему? Или какие другие варианты.
Спасибо заранее за помощь)
Прикрепил пример.
Изменено: burov_oleg - 23.06.2020 20:53:32
 
И Вам здравствуйте!
 
Добрый вечер, гуру-excel)
Вы меня в который раз выручаете!
 
Доброе время суток
Цитата
burov_oleg написал:
Или какие другие варианты
Power Query, естественно :)
 
Выглядит красиво, а вот реализовать у меня что-то не получается, могли бы Вы по шагам подсказать, как в PQ это можно реализовать на весь файл?
 
Цитата
burov_oleg написал:
у меня что-то не получается, могли бы Вы
сообщить по шагам, что вы делали, когда не получилось?
Цитата
burov_oleg написал:
как в PQ это можно реализовать на весь файл?
Это имеет отношение к теме вопроса?
 
Цитата
Есть ли может быть какой-то макрос на эту тему?
Код
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, там нужно внести не так много изменений, чтобы получить на выходе тоже самое.
 
Цитата
Андрей VG написал:
обновляете правую
Обновляю правую в Редакторе запросов, я правильно понимаю?
Может есть какая ссылка на подробный урок?
Не знаю как это сделать, честно говоря....
Цитата
Андрей VG написал:
Ну, или допиливаете код  Kuzmich
"Допилить" тоже не знаю как (

Выручите пожалуйста )))
 
Цитата
Андрей VG написал:
Power Query, естественно
Пробую сейчас как Вы сделали B2=I2, вывожу ИСТИНА\ЛОЖЬ
А удаление как Вы проводили?
 
См. вариант.
 
Цитата
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

Юрий М, ну, вы завернули :)
 
Цитата
Юрий М написал:
См. вариант.
Юрий! Вы просто космос!  :idea:
:) Волшебник!
Спасибо Вам огромное!
 
Цитата
Юрий М написал:
См. вариант.
Только единственное, что он удаляет и исходное значение, то есть удаляет не только дубли, но и само значение.
Это реально как-то исправить?
 
Цитата
Андрей VG написал:
ну, вы завернули
Андрей, привет!
Ну ведь по массивам. И не долго получится ))
 
Цитата
Андрей VG написал:
модифицированным кодом  Kuzmich .
А вот этот модифицированный Вами сработал!
Не удаляет основу, удаляет только дубли.
Спасибо огромное ! И Kuzmich и Вам Андрей!
Выручили!
Страницы: 1
Наверх