Страницы: 1
RSS
Удаление дублированных данных
 
Добрый день.

есть возможность удалять строку, в случае дублирования номера в колонке B?
например новое значение?
но чтобы включалось окно-предупреждение, что новое значение будет удалено с указанием уникального номера

Заранее спасибо!
Леборхам
 
Здравствуйте, только макросом.

Ручками : Данные -> Удалить Дубликаты
Но какие строки будут удаленны, уведомления не будет!
 
Удаление должно быть макросом, оставаться дожно только изначально созданная строка...
И для информации надо видеть что удаляется, тк может быть изменение в другой колонке...
Изменено: Leborham - 21.01.2019 15:58:05
 
Может лучше вообще изначально запретить ввод дубликатов? Или данные уже введены?
Согласие есть продукт при полном непротивлении сторон
 
Данные подкачиваюся по условию из макросов, но когда кто-то меняется статус с уникальным номером, то данные заного вносятся в лист, от этого и дубляж...

Прилагаю один из макросов, который подтянивает данные...
Код
Sub Demande()
    Dim arr(2), i&, itxt$, j&
    Dim dic As Object
    Set dic = CreateObject("Scripting.Dictionary")
    arr(0) = Tabelle3.[B2].CurrentRegion.Value
    arr(1) = Tabelle4.[B3].CurrentRegion.Value
    For i = 2 To UBound(arr(1))
            itxt = arr(1)(i, 10) & arr(1)(i, 6) & arr(1)(i, 16) & arr(1)(i, 3) & arr(1)(i, 1)
            dic.Item(itxt) = 0
            ltxt = ""
    Next i
    j = 0
    ReDim iarr(1 To UBound(arr(0)), 1 To UBound(arr(1), 2))
    For i = 2 To UBound(arr(0))
        If arr(0)(i, 5) = "Approved" Then
            itxt = arr(0)(i, 24) & arr(0)(i, 3) & arr(0)(i, 9) & arr(0)(i, 34) & arr(0)(i, 10)
            If Not dic.Exists(itxt) Then
                j = j + 1
                iarr(j, 10) = arr(0)(i, 24)
                iarr(j, 6) = arr(0)(i, 3)
                iarr(j, 16) = arr(0)(i, 9)
                iarr(j, 3) = arr(0)(i, 34)
                iarr(j, 1) = arr(0)(i, 10)
            End If
        End If
    Next i
    If j = 0 Then Exit Sub
    i = Tabelle4.Range("b" & Rows.Count).End(xlUp).Row + 1
    Tabelle4.Range("b" & i).Resize(j, UBound(iarr, 2)) = iarr
End Sub
 
Пусть это буду я...
Удаление дублей с опросником по первому листу файла-примера:
Код
Sub aaa()
Dim a&, aa As Range, DC As Object, z, b%
Set DC = CreateObject("Scripting.Dictionary")
z = Application.Calculation: b = 2
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Sheets("Tabelle1")
  Do While Len(.Cells(b, 2)) > 0
    If Not DC.Exists(.Cells(b, 2).Value) Then
      DC.Add .Cells(b, 2).Value, .Cells(b, 2).Offset(, -1).Value: b = b + 1
    Else
      a = MsgBox("Обнаружен дубль в строке: " & .Cells(b, 2).Offset(, -1).Value & vbCrLf & "Удалить строку?", vbYesNo, "Искоренение дублей")
      If a = 6 Then .Cells(b, 2).EntireRow.Delete Else b = b + 1
    End If
  Loop
End With
Application.Calculation = z
Application.ScreenUpdating = True
End Sub
Работа кода продолжается до первой встреченной по столбцу "В" пустой ячейки.
Что характерно указанный выше макрос выгружает данные в другой лист.
Изменено: Anchoret - 22.01.2019 05:26:35
 
Удаление всех повторений кроме первого.
Скрытый текст
Изменено: Nordheim - 22.01.2019 08:19:22
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, Anchoret, спасибо огромное.. работает идеально,

но видимо это не очень мне поможет, тк изменения подкачиваются заново..и каждый раз надо удалять *хотя новые данные могут быть правельнее..
есть ли возможность, чтобы при изменении (скажем в дной из колонок) данных, данные не дублировались, а изменяли старое значение.

на данный момент, если в ячейке что-то изменить, она заново добавляет данные.

Заранее спасибо!
Изменено: Leborham - 05.02.2019 16:25:00
Страницы: 1
Наверх