Столкнулся с решением проблемы. Заключается в следующем, в данном файле необходимо убрать повторяющиеся строки, но при условии, если в столбце "Ответ" есть какое либо значение, кроме пустого, даже если оно и повторяется, необходимо что бы оно не удалялось.
По данной теме перечитал множество информации на данном сайте и не только, но сделать такое исключение не получается. Подскажите, может кто то сталкивался с чем то подобным.
За ранее спасибо за ответ!
Добрый день!
Столкнулся с решением проблемы. Заключается в следующем, в данном файле необходимо убрать повторяющиеся строки, но при условии, если в столбце "Ответ" есть какое либо значение, кроме пустого, даже если оно и повторяется, необходимо что бы оно не удалялось.
По данной теме перечитал множество информации на данном сайте и не только, но сделать такое исключение не получается. Подскажите, может кто то сталкивался с чем то подобным.
А может подойдёт такой способ: С помощью фильтра оставляем только строчки с пустыми ячейками в столбце ОТВЕТ, выделяем табличку и используем инструмент УДАЛИТЬ ДУБЛИКАТЫ
А может подойдёт такой способ: С помощью фильтра оставляем только строчки с пустыми ячейками в столбце ОТВЕТ, выделяем табличку и используем инструмент УДАЛИТЬ ДУБЛИКАТЫPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Всем спасибо за помощь. Почти получилось. Ikki, макрос работает отлично и быстро, но в столбце "Ответ" все же удаляет данные, а они в данном случае очень важны(
Всем спасибо за помощь. Почти получилось. Ikki, макрос работает отлично и быстро, но в столбце "Ответ" все же удаляет данные, а они в данном случае очень важны(Ben
Ben, спасибо за быстрое тестирование. прошу прощения за ошибку в коде. правильно так: [vba]
Код
Sub t() Dim a(), g(), d As Object, i&, lr&, s$ lr = Cells(Rows.Count, 1).End(xlUp).Row a = Range([a2], Cells(lr, "f")).Value ReDim g(1 To UBound(a), 1 To 1) Set d = CreateObject("scripting.dictionary") For i = 1 To UBound(a) If CStr(a(i, 3)) = "" Then s = Join(Array(a(i, 1), a(i, 2), a(i, 4), a(i, 5), a(i, 6)), "|") If d.exists(s) Then g(i, 1) = 1 Else d.Item(s) = 0& End If Next [g2].Resize(UBound(a)) = g Range([g2], Cells(lr, "g")).ColumnDifferences([g2]).EntireRow.Delete End Sub
[/vba]
Ben, спасибо за быстрое тестирование. прошу прощения за ошибку в коде. правильно так: [vba]
Код
Sub t() Dim a(), g(), d As Object, i&, lr&, s$ lr = Cells(Rows.Count, 1).End(xlUp).Row a = Range([a2], Cells(lr, "f")).Value ReDim g(1 To UBound(a), 1 To 1) Set d = CreateObject("scripting.dictionary") For i = 1 To UBound(a) If CStr(a(i, 3)) = "" Then s = Join(Array(a(i, 1), a(i, 2), a(i, 4), a(i, 5), a(i, 6)), "|") If d.exists(s) Then g(i, 1) = 1 Else d.Item(s) = 0& End If Next [g2].Resize(UBound(a)) = g Range([g2], Cells(lr, "g")).ColumnDifferences([g2]).EntireRow.Delete End Sub