Страницы: 1
RSS
Удалить дубликаты по незаполненному столбцу
 
Добрый день, всем!
Есть большая таблица на 35 тысяч строк. В примере выложил для примера 25 строк. Можно ли удалить повторяющиеся строки в которых пустая ячейка D?  Пустая ячейка - столбец D - название "Подходит или нет". Или в моем случае только сортировкой мучаться?
В примере выделил красным - строки, которые должны удаляться.
Спасибо.
 
Цитата
cherepushka написал:
Или в моем случае только сортировкой мучаться?
а почему мучатся? отсортировали - удалили...
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Можно так:
Код
Sub t()
x = ActiveSheet.UsedRange.Rows.Count
For i = x To 1 Step -1
If Cells(i, 4) = "" Then Rows(i).Delete
Next
End Sub
 
Там еще 3 столбца. И если надо проверять на повторяющиеся строки (в которых пустая ячейка D), то без сортировки это сделать гораздо сложнее. Надо уходить от этого решения, т.е. сортировать.

Не проще ли построить сводную таблицу и удалить повторы таким образом?
Или через Power Query еще проще: загрузить, убрать пустые, удалить дубликаты ("Сократить строки/Удалить строки/Удалить дубликаты"). Порядок строк при этом сохраняется.
Изменено: eeigor - 11.02.2019 14:48:38
 
Спасибо всем.
Нашел код Hugo, с которым получилось сделать как необходимо. Но выводит и пустые ячейки столбца D
И игнорит Медь и сталь.
Изменено: cherepushka - 11.02.2019 13:00:24
 
А потому что ваш код не виден в окне локальных значений (конструкция With).
Сделайте так:
Set d = CreateObject("Scripting.Dictionary")
  With d
      ...
Тогда увидите, что в словарь заносятся только значения из первого столбца, и никаких материалов (медь, сталь).
Ошибка здесь: a(i, 2) & "|" & i
Но идея хорошая: использовать метод словаря Exists.
Такого же результата можно было добиться через использование объекта Collection, только там не метода Exists, и пришлось бы обрабатывать ошибку добавления дубликата.
Изменено: eeigor - 11.02.2019 13:31:42
 
Ламерский макрос :)
Код
Sub Макрос2()
   Range("D1").Select
   Selection.AutoFilter
   ActiveSheet.Range("$A$1:$D$25").AutoFilter Field:=4, Criteria1:="="
   Range("A3").Select
   Range(Selection, Selection.End(xlDown)).Select
   Range(Selection, Selection.End(xlToRight)).Select
   Selection.EntireRow.Delete
   Range("D1").Select
   ActiveSheet.Range("$A$1:$D$11").AutoFilter Field:=4
End Sub
Изменено: zlipse - 11.02.2019 14:13:38
Страницы: 1
Наверх